先说一下何为浏览器的事件冒泡。
默认状态下,如果父元素和子元素全都绑定了事件,当我们点击父元素内的子元素时,父元素上绑定的事件也会被触发。
本节要解决的问题就是:我们点击子元素后,不让父元素上绑定的事件执行。
所涉及的核心代码仅有一句
请看代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<div id="div1" style="width:300px;height:300px;background-color:rgb(179, 226, 148);">
<a id="teamczyx" href="https://www.teamczyx.com">慈众网络科技</a>
</div>
<script type="text/javascript">
document.getElementById('teamczyx').onclick = function(e){
//获取兼容性的事件对象
var e = e || window.event;
console.log('123');
//阻止事件冒泡
// e.stopPropagation();//标准浏览器
//阻止默认行为
// e.preventDefault();//标准浏览器
//通用方式 阻止默认行为
return false;
}
//给父元素绑定的点击事件
document.getElementById('div1').onclick = function(e){
console.log('父元素的点击事件执行了');
}
</script>
</body>
</html>
此时,单击a链接时的执行结果如下:
我们现在将这句代码的注释取消掉,e.stopPropagation();,执行结果如下:
ok,到本节为止,关于事件、事件对象和节点操作就告一段落,从下节开始我们将进入下一个环节。
|