什么是JS冒泡?

发布于 2020-05-31 03:45

0x01 事件冒泡

当一个元素接收到事件的时候 会把他接收到的事件传给自己的父级,一直到window 。

var parent= document.getElementById("parent");
var child = document.getElementById("child");
   child.onclick = function(){alert("child");};
   parent.onclick = function(){alert("parent");};//父级

//html代码
 <div id="parent">
    <div id="child"></div>
 </div>

0x02 现象解析

两个父子关系的div,分别加了点击事件,当点击child的时候,会发现弹出了一次child,接着又弹出了parent,这说明点击child的时候,不仅child的事件被触发了,它的父级parent的点击事件也触发了,这种现象就叫做冒泡。

0x03 停止冒泡

function stopBubble(e) {
    //如果提供了事件对象,则这是一个非IE浏览器
   if ( e && e.stopPropagation )
      //因此它支持W3C的stopPropagation()方法
      e.stopPropagation();
  else
  //否则,我们需要使用IE的方式来取消事件冒泡
    window.event.cancelBubble = true;
}