如何阻止事件冒泡
事件冒泡
事件冒泡就是在一个嵌套关系中,子元素与父元素绑定了相同的事件触发条件,这里以单击click为例,当单击子元素时,父元素也会的事件也会触发,这中由内到外的触发方式就叫做事件冒泡以下面代码为例,
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#father{
width: 100px;
height:100px;
background-color: aqua;
}
#son{
width: 50px;
height:50px;
background-color: red;
}
</style>
</head>
<body>
<div id="father">
<div id="son">
</div>
</div>
</body>
<script>
var father=document.getElementById('father')
var son=document.getElementById('son')
father.οnclick=function(){
console.log('father');
}
son.οnclick=function(){
console.log('son');
}
</script>
</html>
代码运行后,单击son盒子后控制台打印结果
阻止事件冒泡
阻止事件冒泡触发也很简单,只需要在想要截住元素处添加停止传播的代码就可以了,两层嵌套就在子元素的事件中添加,三层嵌套,如果想触发二三层,就在第二层添加event.stopPropagation(),其中even是事件对象。将上面的js进行修改,将son的触发事件改为下面的
son.onclick=function(event){
console.log('son');
//浏览器兼容写法 获取事件
var event=event||window.event
//事件停止传播
event.stopPropagation()
}
改完后运行结果