为了账号安全,请及时绑定邮箱和手机立即绑定

关于e.data

请问测试三e.data,代表的是什么意思阿


有人可以介绍一下。数据代表什么吗


正在回答

3 回答

研究了一整个下午,基本上弄清楚了,我来解释一下:

先来看完整代码:

function dome(e){
    alert(e.data);
}
$("div").click(999,dome);

要搞懂e.data先要搞懂下面的问题:

.click(999,dome)做了什么事情?

.click(999,dome)调用的时候做了2件事

第1:.click(999,dome),当.click()调用的时候,返回(即给函数dome添加)了一个事件对象e(即event),这个事件对象包含了一个对象data这个事件对象e就是点击鼠标这个事件,即click事件本身。

第2:.click(999,dome),将999这个参数传递给了事件e的对象data,这里一定要注意,999不是传递给了dome函数,而是传递给了dome函数的事件对象e的对象data(一定要注意理解这一句话)

看这个例子可能比较容易理解:

假设我们将999理解为传递给dome的参数,那么尝试运行下面的代码:

dome(999);

按错误的理解,将弹出窗口,输出999;

而实际上输出了 undefined,原因是当这样写的时候,实际上dome函数接收了一个无用的参数,而dome函数还在尝试输出e.data,而dome函数并没有e这个对象,结果输出undefined,就是说我们没有定e这个对象。

但是当使用.click使用dome作为参数的时候,e对象出现了,说明e对象是被.click()添加的。

将上面的代码改为这样会比较容易理解:

$("div").click(999,function(e){
    alert(e.data);
})
//这里使用匿名函数代替dome函数

另外要说明的是:这里我一直称呼data为对象,而不是数据的原因,data在这里是作为一个对象出现的

看这里的代码:

var userObj = { name:"imooc",age:999}; //定义了一个对象userObj
$("div").click(userObj,function(e){ //将对象userObj作为.click的参数
    alert(e.data.name);
})

将输出:imooc

可以看到,之前的参数999,被替换成了userObj这个对象,那么在引用这个对象的时候,还是通过 data.name来调用的,说明:userObj对象被传递给了data

总结:

1.click(),在调用时,作为click参数的function被添加了 event事件对象,该对象拥有一个data对象;

2.click(),在调用是,如果设置参数,该参数将被传递给,event事件对象的data对象。


另外可以看我写的手记,希望对你有帮助:jQuery事件参数传递的解读

4 回复 有任何疑惑可以回复我~

e.data就是传过来的e的值。$("button:eq(2)").mousedown(1111, data)里面的mousedown事件调用data函数,并且将1111传入data函数,用e来接收传入的值。

1 回复 有任何疑惑可以回复我~

获取当前元素的数据吧

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于e.data

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信