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 }

转载于:https://www.cnblogs.com/xingmeng/p/3830879.html

JS阻止冒泡方法(转)相关推荐

  1. js阻止冒泡的方式-完整版

    js阻止冒泡的方式-完整版 直接讲结论: 1.原生js 两种方式绑定事件 onclick 和 addEventListener 阻止冒泡的唯一方式为 var e = window.event || a ...

  2. JS阻止冒泡和取消默认事件(默认行为)

    阻止事件冒泡 function stopPropagat(e) {if (e && e.stopPropagation) {e.stopPropagation();//标准浏览器} e ...

  3. JS阻止冒泡和元素默认事件

    JS阻止冒泡和元素默认事件 文章目录 JS阻止冒泡和元素默认事件 1.JS阻止冒泡 :stopPropagation() 2.阻止元素默认事件行为 preventDefault() onclick + ...

  4. 关于js阻止冒泡时的一些坑

    前提:这两天在用datatable做列表,点击列表行显示详情,就会涉及到阻止冒泡的问题,话不多说直接上代码,大概思路就是先获取到事件,然后阻止它. //得到事件 function getEvent() ...

  5. js阻止冒泡,兼容写法。

    有几次遇到a链接里面包含click点击方法,这时候会触发click事件,还会触发a链接跳转.这时候就需要阻止冒泡了. 添加 event.stopPropagation(); 就可以了.在chrome上 ...

  6. Javascript阻止冒泡方法

    阻止冒泡的方法 w3c的方法:(火狐.谷歌.IE11) event.stopPropagation() IE10以下则是: event.cancelBubble= true

  7. js阻止冒泡事件和默认事件

    event.stopPropagation();这个event要通过参数传递过来,不然可能有的浏览器(比如火狐)不能识别event 要像这么写: οnclick="init.toggleUs ...

  8. JS 阻止冒泡 阻止默认

    1.什么是事件冒泡? 事件冒泡是指事件由子级传向父级,事件冒泡常常会使事件按照不属于我们原本的方式进行,影响我们正常处理事件的流程. 下边的代码 通过控制台 可以看出事件冒泡的流程. <body ...

  9. js阻止冒泡的两种方法

    冒泡是一种很有意思的现象,在我们的 js 中也有冒泡现象,让我们一起去看看吧 先来看一段代码 <!DOCTYPE html> <html><head><met ...

最新文章

  1. chineseocr
  2. 20180826(01)-Java数据结构
  3. 11 步教你选择最稳定的 MySQL 版本
  4. 实习日志_实习律师实习日志第十八篇(连载30篇)
  5. 【289天】跃迁之路——程序员高效学习方法论探索系列(实验阶段47-2017.11.21)...
  6. MFC单文档多视图程序设计与Splitter拆分窗口
  7. 群体智能之人工蜂群算法及其改进(ABC)
  8. word 公式下沉解决
  9. 【2022新版】全套Java教程-300集完整版
  10. CSDN账号被盗了吗?
  11. 物联网(lot)特定场景最佳实践
  12. SW小技巧2:将属性链接到 SOLIDWORKS 工程图的简便方法
  13. 研究生软件测试项目答辩ppt,优秀硕士毕业论文答辩PPT.ppt
  14. c语言临时内存变量释放,C语言中的内存分配与释放
  15. Matlab同步脉冲触发器参数,脉冲参数有哪些?脉冲参数介绍
  16. BI神器Power Query(9)-- PQ从XML文件导入数据
  17. 2021软件测试面试题大全(78题含答案解析)
  18. 【剖析】上拉电阻和下拉电阻原理及其作用
  19. bcedit双系统更改启动项名称_Win7下双系统修改BCD启动项名称
  20. 揭开程序员装 13 行为的面具

热门文章

  1. 获取当前组策略配置的信息
  2. 钱少事多,开源项目维护人员几乎集体出走
  3. 我发现了 Microsoft Azure 中的两个漏洞
  4. 一年太久,研究员决定不等补丁直接披露 Safari 0day 详情
  5. 思科警告:“关键更新”钓鱼攻击窃取用户 Webex 凭证
  6. 苹果iPhone XI新爆料:用了被小米当噱头的TOF技术
  7. 集成学习lgb库调参的粒子群方法
  8. consule服务注册和发现 安装 部署
  9. Haproxy相关概念解析
  10. Docker到底是什么?为什么它这么火!