JavaScript阻止事件冒泡的方法


Posted in Javascript onDecember 06, 2021

我们需要注意的是:事件冒泡本身的特性,会带来的坏处,也会带来的好处,在后续的博客我会详细说明。

  • 所以我们在这里将论述一下如何阻止事件冒泡。
  • 比如现在有一个子盒子和一个父盒子,子盒子和父盒子二者都有点击事件,但是此时,当我们点击子盒子时,只想让子盒子显示点击事件。这里我们就要用到阻止事件冒泡的方法来隔断父盒子的事件显示。

先创建两个盒子,并给他们添加点击事件,如下所示:

<!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>
    <style>
        .father{
            margin: 100px auto;
            width: 100px;
            height:100px;
            overflow: hidden;
            background-color: palegreen;
        }
        .son{
            width: 50px;
            height: 50px;
            margin-left: 25px;
            margin-top: 25px;
            background-color: paleturquoise;
        }
    </style>
</head>
<body>
    <div class="father">
        <div class="son"></div>
    </div>
    <script>
        var father = document.querySelector('.father');
        var son = document.querySelector('.son');
       son.addEventListener('click',function(){
            alert('son');
        },false)
        father.addEventListener('click',function(){
            alert('father');
        },false)
    </script>
</body>
</html>

当我们点击子盒子的点击事件时,打印结果为:

JavaScript阻止事件冒泡的方法

我们应该怎样阻断父盒子的点击事件呢?

可以直接在子盒子内部的点击事件里面添加stopPropagation()方法,

如下所示:

son.addEventListener('click',function(e){
            alert('son');
            e.stopPropagation();
        },false)

此时,运行结果为:

JavaScript阻止事件冒泡的方法

阻断成功。

但是需要注意的是:这个方法也有兼容性问题,在低版本浏览器中(IE 6-8 )通常是利用事件对象cancelBubble属性来操作的。即直接在相应的点击事件里面添加:

e.cancelBubble = true;

 如果我们想要解决这种兼容性问题,就可以采用下述方法:

if(e && e.stopPropagation){
      e.stopPropagation();
  }else{
      window.event.cancelBubble = true;
  }

到此这篇关于基于JavaScript阻止事件冒泡的文章就介绍到这了,更多相关JavaScript阻止事件冒泡内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
jQuery 常见开发使用技巧总结
Dec 26 Javascript
基于jQuery的输入框在光标位置插入内容, 并选中
Oct 29 Javascript
javascript简易缓动插件(源码打包)
Feb 16 Javascript
浅析js封装和作用域
Jul 09 Javascript
textarea 控制输入字符字节数(示例代码)
Dec 27 Javascript
利用JQuery制作符合Web标准的QQ弹出消息
Jan 14 Javascript
JQuery创建DOM节点的方法
Jun 11 Javascript
jQuery图片轮播实现并封装(一)
Dec 03 Javascript
jQuery EasyUI Draggable拖动组件
Mar 01 Javascript
Puppeteer 爬取动态生成的网页实战
Nov 14 Javascript
vue如何搭建多页面多系统应用
Jun 17 Javascript
基于javascript的无缝滚动动画实现2
Aug 07 Javascript
JavaScript执行机制详细介绍
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
Nov 27 #Vue.js
JavaScript 与 TypeScript之间的联系
JavaScript利用html5新方法操作元素类名详解
Nov 27 #Javascript
一文了解JavaScript用Element Traversal新属性遍历子元素
Nov 27 #Javascript
JavaScript选择器函数querySelector和querySelectorAll
Nov 27 #Javascript
关于JavaScript 中 if包含逗号表达式
Nov 27 #Javascript
You might like
用 Composer构建自己的 PHP 框架之构建路由
2014/10/30 PHP
学习php设计模式 php实现单例模式(singleton)
2015/12/07 PHP
yii2局部关闭(开启)csrf的验证的实例代码
2017/07/10 PHP
清除网页历史记录,屏蔽后退按钮!
2008/12/22 Javascript
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
2009/11/26 Javascript
HTML颜色选择器实现代码
2010/11/23 Javascript
JavaScript原型继承之基础机制分析
2011/08/26 Javascript
js onmousewheel事件多次触发问题解决方法
2014/10/17 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
2015/01/28 Javascript
javascript转换日期字符串为Date日期对象的方法
2015/02/13 Javascript
JavaScript数组的栈方法与队列方法详解
2016/05/26 Javascript
微信小程序 loading(加载中提示框)实例
2016/10/28 Javascript
bootstrap table方法之expandRow-collapseRow展开或关闭当前行数据
2020/08/09 Javascript
解决IE11 vue +webpack 项目中数据更新后页面没有刷新的问题
2018/09/25 Javascript
JS获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天的示例代码
2018/12/05 Javascript
vue2路由基本用法实例分析
2020/03/06 Javascript
Python性能优化技巧
2015/03/09 Python
Python遍历目录并批量更换文件名和目录名的方法
2016/09/19 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
2018/12/21 Python
python自动化工具之pywinauto实例详解
2019/08/26 Python
详解python中*号的用法
2019/10/21 Python
Python列表list常用内建函数实例小结
2019/10/22 Python
CSS3 特效范例整理
2011/08/22 HTML / CSS
CSS3 边框效果
2019/11/04 HTML / CSS
如何判断计算机可能已经中马
2013/03/22 面试题
解决方案设计综合面试题
2015/08/31 面试题
中学生学雷锋活动心得体会
2014/03/10 职场文书
买房委托公证书
2014/04/08 职场文书
2014年银行员工工作总结
2014/11/12 职场文书
办公用房租赁协议书
2014/11/29 职场文书
岗位职责范本大全
2015/02/26 职场文书
先进党支部事迹材料2016
2016/02/26 职场文书
2019感恩宣传标语!
2019/07/05 职场文书
基于tensorflow权重文件的解读
2021/05/26 Python
Python趣味爬虫之用Python实现智慧校园一键评教
2021/05/28 Python
Python 快速验证代理IP是否有效的方法实现
2021/07/15 Python