什么是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;
}