未阻止事件传递的效果:
<body>
<div class="father_box">
<p>父元素</p>
<div class="child_box">
<p>子元素(点我)</p>
</div>
</div>
<script>
// 父元素点击事件,点击使子元素显示/隐藏
$(".father_box").on("click",function(){
let show = $(".child_box").css("display")
console.log(show);
if(show == "none"){
$(".child_box").css("display","block")
}else{
$(".child_box").css("display","none")
}
})
// 子元素点击事件,点击后输出内容
$(".child_box").on("click",function(){
console.log("您点击了子元素");
})
</script>
</body>
看,子元素被父元素的点击事件影响到了,子元素的点击事件中并没有使元素隐藏的代码。
这是因为“事件捕获”和“事件冒泡”的缘故
我们只需阻止子元素的事件冒泡,不让它传递,结果如下:
效果:
完美解决 > w <``
谢谢观看