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 相关文章推荐
ExtJS下grid的一些属性说明
Dec 13 Javascript
javascript parseInt() 函数的进制转换注意细节
Jan 08 Javascript
js网页实时倒计时精确到秒级
Feb 10 Javascript
jQuery中prependTo()方法用法实例
Jan 08 Javascript
解决bootstrap中modal遇到Esc键无法关闭页面
Mar 09 Javascript
TypeScript 中接口详解
Jun 19 Javascript
jQuery过滤特殊字符及JS字符串转为数字
May 26 Javascript
有关文件上传 非ajax提交 得到后台数据问题
Oct 12 Javascript
JavaScript实现翻页功能(附效果图)
Feb 16 Javascript
Angular中ng-repeat与ul li的多层嵌套重复问题
Jul 24 Javascript
Vue指令v-for遍历输出JavaScript数组及json对象的常见方式小结
Feb 11 Javascript
微信小程序实现图片选择并预览功能
Jul 25 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
用PHP实现多级树型菜单
2006/10/09 PHP
php源代码安装常见错误与解决办法分享
2013/05/28 PHP
修改php.ini以达到屏蔽错误信息并记录日志
2013/06/16 PHP
PHP面向对象中new self()与 new static()的区别浅析
2017/08/17 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
关于javascript document.createDocumentFragment()
2009/04/04 Javascript
基于jquery的合并table相同单元格的插件(精简版)
2011/04/05 Javascript
Javascript 按位与赋值运算符 (&amp;=)使用介绍
2014/02/04 Javascript
利用原生JavaScript获取元素样式只是获取而已
2014/10/08 Javascript
jQuery插件datalist实现很好看的input下拉列表
2015/07/14 Javascript
jquery验证手机号是否正确实例讲解
2015/11/17 Javascript
BootStrap整体框架之基础布局组件
2016/12/15 Javascript
微信小程序实现左右联动的实战记录
2018/07/05 Javascript
TypeScript基础入门教程之三重斜线指令详解
2018/10/22 Javascript
微信小程序的注册页面包含倒计时验证码、获取用户信息
2019/05/22 Javascript
vue键盘事件点击事件加native操作
2020/07/27 Javascript
关于vue-cli3打包代码后白屏的解决方案
2020/09/02 Javascript
vue router返回到指定的路由的场景分析
2020/11/10 Javascript
Python 元组(Tuple)操作详解
2014/03/11 Python
Python显示进度条的方法
2014/09/20 Python
Python的math模块中的常用数学函数整理
2016/02/04 Python
Python把csv数据写入list和字典类型的变量脚本方法
2018/06/15 Python
Django获取model中的字段名和字段的verbose_name方式
2020/05/19 Python
python如何使用代码运行助手
2020/07/03 Python
HTML5播放实现rtmp流直播
2020/06/16 HTML / CSS
Stella McCartney官网:成衣、包袋、香水、内衣、童装及Adidas系列
2018/12/20 全球购物
吉力贝官方网站:Jelly Belly
2019/03/11 全球购物
德国苹果商店:MacTrade
2020/05/18 全球购物
户外活动总结范文
2014/04/30 职场文书
环境工程专业自荐信范文
2014/06/24 职场文书
庆祝三八妇女节标语
2014/10/09 职场文书
会议通知格式范文
2015/04/15 职场文书
2015年幼师工作总结
2015/04/28 职场文书
优质护理心得体会
2016/01/22 职场文书
go原生库的中bytes.Buffer用法
2021/04/25 Golang
如何理解Vue前后端数据交互与显示
2021/05/10 Vue.js