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

为什么测试三中的e指向的是按下按钮事件,但是测试二中的e指向的是按下p元素而不是按下按钮?

    <h4>测试二</h4>

    <div class="test2">

        <p>$('button:first').mousedown(function(e) {alert(this)})</p>

    </div>

    <button>指定触发事件</button>

    <script type="text/javascript">

    $('p').mousedown(function(e) {

            alert(e.target.textContent)

        })

        //this指向button元素

    $("button:eq(1)").mousedown(function() {

        $('p').mousedown() //指定触发绑定的事件

    })

    </script>



    <h4>测试三</h4>

    <div class="test3">

        <p>$('.right').mousedown(1111, set)</p>

    </div>

    <button>不同函数传递数据</button>

    <script type="text/javascript">

    //不同函数传递数据

    function data(e) {

        alert(e.data) //1111

    }


    function a() {

        $("button:eq(2)").mousedown(1111, data)

    }

    a();

如题,是因为测试二中调用了事件,被触发的事件(e)是绑定在p上的;而测试三中调用的是函数,函数本身不是一个事件(e),所以函数的(e)就指向绑定在button上的事件了吗??感觉怪怪的?

提问者:炊烟1 2017-03-22 20:28

个回答

  • 好吃的蛋包饭
    2018-08-04 22:41:05

    e是event,event.target才指向触发时间的元素。。前面都在说些啥

  • 夜莺z
    2017-04-02 22:32:02

    e是event的意思,是当前执行的事件

    测试二:

    $('p').mousedown(function(e) {

                alert(e.target.textContent)

            })

    是p元素的mousedown事件,后面button的触发事件也是p元素的啊。

    测试三:

    function data(e) {

            alert(e.data) //1111

        }


        function a() {

            $("button:eq(2)").mousedown(1111, data)

        }

    相当于:

    function a() {

            $("button:eq(2)").mousedown(1111,function(e) {

            alert(e.data)

        })

        }


  • 愚小子
    2017-03-22 21:37:30

    e指的是当前执行的dom

  • 暴打小朋友
    2017-03-22 21:08:48

    这么给你说吧,e是个新东西,可以写成任何形式比如ABC,没有任何意义,当个盒子传入,装入了事件本身,然后他成了一个类,里面有很多属性,方法,调用函数,他装什么就是什么东西,那个1111是把e.date的值改成了1111