博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS阻止冒泡方法(转)
阅读量:6347 次
发布时间:2019-06-22

本文共 1022 字,大约阅读时间需要 3 分钟。

S事件流其中一种是冒泡事件,当一个元素被触发一个事件时,该目标元素的事件会优先被执行,然后向外传播到每个祖先元素,恰如水里的一个泡泡似的,从产生就一直往上浮,到在水平面时,它才消失。在这个过程中,如果你只希望事件发生在目标元素,而不想它传播到祖先元素上去,那么你需要在“泡泡”离开对象之前刺破它。 

  我在文档中写了一个层,<div id="need_hide">点击以外隐藏该层</div>,并为之设置了简单的样式,现在我希望点击该层以外的地方使之隐藏,那么我给根元素绑定了一个click事件,一点击html就隐藏该DIV,代码如下:

1 document.documentElement.onclick = function() {2     document.getElementById('need_hide').style.display = 'none';3 }

但是点击该层后,也使之隐藏了,这不是我希望得到的效果。由于该层属于根元素的子节点,所以它也被绑定了这个click事件,那么需在该元素被click时阻止冒泡事件的发生,加上以下代码:

1 function stopPropagation(e) { 2     e = e || window.event; 3     if(e.stopPropagation) { //W3C阻止冒泡方法 4         e.stopPropagation(); 5     } else { 6         e.cancelBubble = true; //IE阻止冒泡方法 7     } 8 } 9 document.getElementById('need_hide').onclick = function(e) {10     stopPropagation(e);11 }

如果还想增加一个链接:<a href="#" id="btn_show">显示层</a>,用它来控制该层显示出来,那么仍然需要在该链接被点击时阻止冒泡事件的发生,加上以下代码:

1 document.getElementById('btn_show').onclick = function(e) {2     document.getElementById('need_hide').style.display = 'block';3     stopPropagation(e);4 }

 

转载地址:http://aecla.baihongyu.com/

你可能感兴趣的文章
《计算复杂性:现代方法》——习题
查看>>
Mozilla 释出更新修复中间人攻击漏洞
查看>>
思科表态反对网络中立
查看>>
《HTML5+CSS3网页设计入门必读》——1.5 利用多种Web浏览器执行测试
查看>>
Velocity官方指南-容器
查看>>
国家为何如此重视石墨烯?
查看>>
《Python和Pygame游戏开发指南》——1.14 配套网站上的更多信息
查看>>
Kafka+Flink 实现准实时异常检测系统
查看>>
利用mybatis查询两级树形菜单
查看>>
《慕客网:IOS基础入门之Foundation框架初体验》学习笔记 <一>
查看>>
Spring声明式事务管理之二:核心接口API
查看>>
解决:在微信中访问app下载链接提示“已停止访问该网页”
查看>>
记录PHP错误日志 display_errors与log_errors的区别
查看>>
LNMP环境安装(二)
查看>>
MFC对话框编程-图片控件
查看>>
解析XML中的URL
查看>>
nodejs启动webserver服务
查看>>
小偷被抓叫嚣:我不偷警察没饭吃
查看>>
python初学—-实现excel里面读数据进行排序
查看>>
用户体验升级后 “谁行谁上”让百度Q4财报更有底气
查看>>