js基础_70、事件的冒泡
事件的冒泡(Bubble)
所谓的冒泡指的是事件的向上传导,当后代元素上的事件被触发时,其祖先元素的相同事件也会被触发。在开发中大部分情况冒泡都是有用的,如果不希望发生事件冒泡可以通过事件对象来取消冒泡。
—-取消冒泡,可以将事件对象的cancelBubble设置为true,即可取消冒泡。比如:event.cancelBubble=true;
如下代码就是事件的冒泡。
body代码如下:
<body id="body">
<div id="box1">
我是box1
<span id="s1">我是span</span>
</div>
</body>
js和css如下:
<style>
#box1 {
width: 200px;
height: 200px;
background-color: yellowgreen;
}
#s1{
background-color: yellow;
}
</style>
<script>
window.onload=function(){
var s1=document.getElementById("s1");
var box1=document.getElementById("box1");
s1.onclick=function(){
alert("我是span的单击响应函数");
}
box1.onclick=function(){
alert("我是box1的单击响应函数");
}
document.body.onclick=function(){
alert("我是body的单击响应函数");
}
};
</script>
如上代码可以看到,分别给三个具有父子关系的元素绑定了一个单击响应函数,点击span元素时,会依次弹出alert(“我是span的单击响应函数”);、alert(“我是box1的单击响应函数”);、alert(“我是body的单击响应函数”);三个提示框,单击div元素时,也会依次弹出alert(“我是box1的单击响应函数”);、alert(“我是body的单击响应函数”);两个个提示框,这就是事件的冒泡。
上面代码如果要取消第一个的冒泡,修改如下js代码即可
s1.onclick=function(event){
event=event||window.event;
event.cancelBubble=true;
alert("我是span的单击响应函数");
}
div跟随鼠标移动练习中取消一个div的移动事件的冒泡
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
#btn1 {
width: 100px;
height: 100px;
background-color: red;
position: absolute;
/*要使用js偏移量使其移动,必须设置定位*/
}
#topdiv{
width: 300px;
height: 300px;
background-color: aquamarine;
}
#body{
height: 1500px;
margin: 0px;
}
</style>
<script>
window.onload=function(){
var box1=document.getElementById("btn1");
var box2=document.getElementById("topdiv");
document.onmousemove=function(event){
event=event||window.event;
var x=event.pageX;
var y=event.pageY;
box1.style.left=x+"px";
box1.style.top=y+"px";
};
box2.onmousemove=function(event){
event=event||window.event;
event.cancelBubble=true;
};
};
</script>
</head>
<body id="body">
<div id="topdiv"></div>
<div id="btn1"></div>
</body>
</html>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!