JS阻止事件冒泡event.stopPropagation与阻止默认事件event.preventDefault
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="div">
<a href="http://www.baidu.com" id="a">go to baidu</a>
</div>
<script>
document.getElementById('div').onclick = function() {
alert('冒泡')
}
document.getElementById('a').onclick = function(event) {
}
</script>
</body>
</html>
以上代码中,html结构非常简单,仅仅是一个到达百度的链接,外面套一层div,JS声明两个点击方法,一个监听a标签,一个监听div
正常情况下,当我们点击a标签时,网页会到达百度,同时触发监听a标签的点击方法,之后事件往外层冒泡,再触发监听外层的点击方法
情况一:
添加event.stopPropagation到a标签的点击方法
document.getElementById('a').onclick = function(event) {
event.stopPropagation()
}
‘冒泡’弹窗不再出现
情况二:
添加event.preventDefault到a标签的点击方法
document.getElementById('a').onclick = function(event) {
event.preventDefault()
}
阻止了链接跳转,事件正常往外冒泡,‘冒泡’弹窗出现
情况三:
同时添加event.preventDefault、event.stopPropagation到a标签的点击方法
document.getElementById('a').onclick = function(event) {
event.preventDefault()
event.stopPropagation()
}
什么事都没有发生,既阻止链接跳转,也阻止事件冒泡
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律