Be_Stronger
2016-08-02 19:45
请问测试三e.data,代表的是什么意思阿
有人可以介绍一下。数据代表什么吗
研究了一整个下午,基本上弄清楚了,我来解释一下:
先来看完整代码:
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事件参数传递的解读
e.data就是传过来的e的值。$("button:eq(2)").mousedown(1111, data)里面的mousedown事件调用data函数,并且将1111传入data函数,用e来接收传入的值。
获取当前元素的数据吧
jQuery基础(三)—事件篇
89997 学习 · 625 问题
相似问题