问答详情
源自:5-2 on()的高级用法

$('body')改成$('div')为什么弹了两次

$('div').on('click', 'a', function(e) {

       alert(e.target.textContent)

    })


提问者:啊啊啊啊123 2016-09-08 17:11

个回答

  • Freestyle文
    2016-09-12 16:13:49

    事件最开始由最具体的元素(文档中嵌套层次最深的那个节点,这里是a)接收,然后逐级向上传播至最不具体的那个节点,这就是事件冒泡的流程,在这里你给两个div都绑定了click事件,都由a接收并执行回调函数,所以会触发两次

  • __innocence
    2016-09-08 19:43:06

    a上层有两个div,冒泡了两次。

    你换成

    $('.left').on('click', 'a', function(e) {

           alert(e.target.textContent)

        })

    就没问题了,这应该是你想做的事。


  • resway
    2016-09-08 17:32:12

    事件冒泡吧