当前位置: 首页> 健康> 母婴 > JavaScript基础(30)_事件的冒泡、事件的委派

JavaScript基础(30)_事件的冒泡、事件的委派

时间:2025/7/17 10:25:47来源:https://blog.csdn.net/no15870678621/article/details/140949195 浏览次数:0次

事件的冒泡(Bubble)

所谓的冒泡指的是事件的向上传导,当后代元素上的事件被触发时,其祖先元素的“相同事件”也会被触发。

取消事件冒泡
在开发中大部分情况冒泡都是有用的,如果不希望发生事件冒泡可以通过事件对象来取消冒泡。取消冒泡代码:event.cancelBubble = true

事件的委派 

将事件统一绑定给元素的共同祖先元素,这样当后代元素上的事件触发时,会一直冒泡到祖先元素,从而通过祖先元素的响应函数来处理事件。事件的委派是利用了冒泡,通过委派可以减少事件绑定的次数,从而提高程序的性能。

简单理解就是:原本是某个元素需要绑定的事件,现在将这个事件交给别的元素去做,正常我们把它交给父级元素,比如:原本是给li绑定点击事件,现在交给它父级ul绑定,利用冒泡原理,点击li的时候会触发ul的事件;

案例1:

<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><title>事件的冒泡</title><style>.box1 {width: 300px;height: 300px;background-color: aquamarine;position: relative;}.box2 {width: 250px;height: 250px;background-color: bisque;position: relative;}.box3 {width: 150px;height: 150px;background-color: chartreuse;position: relative;}span {position: absolute;bottom: 10px;right: 20px;}</style><script>window.onload = function () {var box3 = document.getElementsByClassName("box3")[0];box3.onclick = function (event) {// 解决浏览器兼容性问题event = event || window.event;// 取消冒泡event.cancelBubble = true;alert("你好!我是box3");}var box2 = document.getElementsByClassName("box2")[0];box2.onclick = function (event) {event = event || window.event;event.cancelBubble = true;alert("你好!我是box2");}var box1 = document.getElementsByClassName("box1")[0];box1.onclick = function (event) {event = event || window.event;event.cancelBubble = true;alert("你好!我是box1");}}   </script>
</head>
<body><div class="box1"><span>我是box1</span><div class="box2"><span>我是box2</span><div class="box3"><span>我是box3</span></div></div></div>
</body>
</html>

案例2

<!DOCTYPE html>
<html lang="zh"><head><meta charset="UTF-8"><title>事件的委派</title><script>window.onload = function () {// 为每一个超链接都绑定一个单机响应事件函数缺点:// 1、比较繁琐// 2、只能在已有超链接绑定事件,新添加超链接则必须重新绑定// 因此:把单击响应事件,委派给其祖先元素,利用冒泡原理,使得后代元素都能触发事件,这能大大简化代码,提高程序性能。var ul = document.getElementsByTagName("ul")[0];ul.onclick = function (event) {event = event||window.event;// className中 "N" 是大写,link记得带引号。if(event.target.className == "link"){alert("谢谢你的点击!");}}var addA = document.getElementById("addA");addA.onclick = function(){var li = document.createElement("li");// 多重引号冲突时,内部引号变为单引号li.innerHTML = "<a href='javascript:;' class='link''>我是新链接</a>";ul.appendChild(li);}}</script>
</head>
<body><button id="addA">添加新链接</button><ul><li><a href="javascript:;">不跳转链接</a></li><li><a href="javascript:;" class="link">链接一</a></li><li><a href="javascript:;" class="link">链接二</a></li><li><a href="javascript:;" class="link">链接三</a></li></ul>
</body>
</html>

关键字:JavaScript基础(30)_事件的冒泡、事件的委派

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: