问答详情
源自:2-2 jQuery鼠标事件之mousedown与mouseup事件

关于e.data

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


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


提问者:Be_Stronger 2016-08-02 19:45

个回答

  • GavinZeng
    2016-10-21 09:44:41

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

    先来看完整代码:

    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事件参数传递的解读

  • qq_梦里_0
    2016-08-04 18:50:00

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

  • wajf
    2016-08-02 20:24:18

    获取当前元素的数据吧