小编给大家分享一下在点击div中的p时怎样阻止事件冒泡,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
我还是以一个案例来说明问题,html代码如下:
<div onclick="show('a')">
<p onclick="show('b')"></p>
</div>
css代码如下:
div{
width:500px;
height:500px;
background:red;
}
p{
width:200px;
height:200px;
background:blue;
}
js代码如下:
function show(info){
alert(info);
}
稍微懂点js的人都知道当我点击p时,基于事件冒泡机制,会触发父元素div的onclick事件,结果是先弹出b、再弹出a。
那么问题来了,如何修改show()这个函数而只弹出b?我第一次的解决方法是(各位大神勿喷):
function show(e,info){
function cancelBubble(e){
e = e || window.event;
if (e.stopPropagation) {
e.stopPropagation();
}else {
e.cancelBubble = true;
}
}
alert(info);
}
结果老是报错。我就开始各种百度,最终解决方法如下:
function show(info){
alert(info);
cancelBubble();
}
function cancelBubble(e) {
var evt = e ? e : window.event;
if (evt.stopPropagation) { //W3C
evt.stopPropagation();
}else { //IE
evt.cancelBubble = true;
}
}
看完了这篇文章,相信你对“在点击div中的p时怎样阻止事件冒泡”有了一定的了解,如果想了解更多相关知识,欢迎关注天达云行业资讯频道,感谢各位的阅读!