js之事件冒泡

132 阅读1分钟

js之事件冒泡

1.什么是事件冒泡

  • DOM事件流(event flow )存在三个阶段:

    • 事件捕获阶段
    • 处于目标阶段
    • 事件冒泡阶段
  • 事件捕获

    • 通俗的理解就是,当鼠标点击或者触发dom事件时,浏览器会从根节点开始由外到内进行事件传播,即点击了子元素,如果父元素通过事件捕获方式注册了对应的事件的话,会先触发父元素绑定的事件。
  • 事件冒泡

    • 与事件捕获恰恰相反,事件冒泡顺序是由内到外进行事件传播,直到根节点。
    • dom标准事件流的触发的先后顺序为:先捕获再冒泡,即当触发dom事件时,会先进行事件捕获,捕获到事件源之后通过事件传播进行事件冒泡。

例如:

点击box2结果如下:

因为box2在box1里面,所以点击box2时,也同时点击了box1,这就是事件冒泡

2.如何终止事件冒泡

  • 方法一:在相应的函数中加上event.stopPropagation() 这是阻止事件的冒泡方法,不让事件向documen上蔓延。

修改之后:

点击box2结果如下:

  • 方法二:判断event.targetevent.currentTarget是否相等
    • event.target:指真正触发事件的元素
    • event.currentTarget:指绑定了事件监听的元素(触发事件元素的父级元素)
    • 这时判断两者相等,则执行相应的处理函数;当事件冒泡到上一级时,event.currentTarget变成 了上一级元素,这时候判断二者不相等,则就不作响应处理逻辑。

修改之后:

点击box2结果如下: