问答详情
源自:6-1 jQuery事件对象的作用

关于冒泡问题

之前章节里提到的冒泡事件是:子元素如果绑定了某一事件(比如说mouseover),如果子元素出触发了mouseover事件,它会一直往上找父元素上的mouseover事件,如果父元素有mouseover事件,那么父元素的mouseover也会被触发。也就是说父元素和子元素都绑定了相同事件才会出现冒泡现象。

但是这里的li元素并没有绑定任何事件,怎么往上冒泡呢?换句话说,绑定的是ul元素,为什么起作用的是li元素?



提问者:qq_慕仰544584 2019-11-08 19:21

个回答

  • 金刚无敌葫芦娃
    2020-04-11 22:08:55

    我觉得,本教程的“绑定”这个词用的不好,事件这个东西应该是称之为“监听”更为恰当。

    当单击一个元素、或滑入滑出元素时,都会由该元素触发事件,然后一层一层向上冒泡,如果一直到body都没有遇到某元素去监听这个事件,那就没有任何反应,如果该元素有监听该单击事件,那就会知道这个事件,如果该元素的父代或祖代有添加监听事件,也会知道这个事件。


    打个比喻,ABCDEF站成一排,A倒了一桶巧克力,从A流向F,

    A用手沾了舔了舔,知道是甜的,A倒的

    D用手沾了舔了舔,也知道是甜的,A倒的

    这就是A和D监听了“倒一桶巧克力”这个事件

    如果没有任何人舔,那这桶巧克力一样从A流向F


  • 慕无忌4172087
    2020-04-01 17:29:53

    冒泡的本质是继承,为什么很多人都是从下往上的去理解呢? 因为是继承,所以ul绑定事件后,该事件也被绑定在了它的子孙元素上,所以你点击任何一个它的子孙元素都会触发事件。如果这个子孙元素本身也绑定了一个一样的事件,那么就会触发两次该事件。

    假设一下,a-b-c a是祖先 c是子孙 ;将a,b,c同时绑定click,那么根据继承的原理,a只绑定了一个click事件,b两个,c三个;同理,如果只有a绑定事件,b,c也只绑定了一次事件。

  • 慕粉2151224176
    2019-11-30 17:34:51

    不存在绑定的说法,jquery只是处理触发的事件,事件本身就有,如果不捕获处理,事件会一直冒泡

    这里只是在ul处理捕获的事件,任何文档对象如ul,li都可以触发事件,只是在于是否捕获处理