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 相关文章推荐
Javascript面向对象编程
Mar 18 Javascript
JS中令人发指的valueOf方法介绍
Feb 22 Javascript
JS图片自动轮换效果实现思路附截图
Apr 30 Javascript
DOM操作一些常用的属性汇总
Mar 13 Javascript
JavaScript模拟实现键盘打字效果
Jun 29 Javascript
基于Jquery和html5的7款个性化地图插件
Nov 17 Javascript
Node.js常用工具之util模块
Mar 09 Javascript
js生成word中图片处理方法
Jan 06 Javascript
从0到1搭建Element的后台框架的方法步骤
Apr 10 Javascript
vue项目打包上传github并制作预览链接(pages)
Apr 19 Javascript
WEEX环境搭建与入门详解
Oct 16 Javascript
使用Vue 自定义文件选择器组件的实例代码
Mar 04 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
mysql_num_rows VS COUNT 效率问题分析
2011/04/23 PHP
PHP字符串的编码问题的详细介绍
2013/04/27 PHP
thinkPHP基于ajax实现的菜单与分页示例
2016/07/12 PHP
thinkphp实现分页显示功能
2016/12/03 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
2017/01/24 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
2020/05/14 PHP
JS与框架页的操作代码
2010/01/17 Javascript
一行代码告别document.getElementById
2012/06/01 Javascript
兼容IE、firefox以及chrome的js获取时间(getFullYear)
2014/07/04 Javascript
纯javascript模仿微信打飞机小游戏
2015/08/20 Javascript
JS实现鼠标滑过折叠与展开菜单效果代码
2015/09/06 Javascript
jQuery Ajax 实例代码 ($.ajax、$.post、$.get)
2016/04/29 Javascript
jQuery实现的简单分页示例
2016/06/01 Javascript
清除js缓存的多种方法总结
2016/12/09 Javascript
js实现背景图自适应窗口大小
2017/01/10 Javascript
基于vue实现多引擎搜索及关键字提示
2017/03/16 Javascript
Kotlin学习第一步 kotlin语法特性
2017/05/25 Javascript
JS实现下拉菜单列表与登录注册弹窗效果
2017/08/10 Javascript
JS中promise化微信小程序api
2018/04/12 Javascript
小程序二次贝塞尔曲线实现购物车商品曲线飞入效果
2019/01/07 Javascript
JS实现二维数组元素的排列组合运算简单示例
2019/01/28 Javascript
详解js加减乘除精确计算
2019/03/19 Javascript
vue使用codemirror的两种用法
2019/08/27 Javascript
OpenLayer学习之自定义测量控件
2020/09/28 Javascript
使用Typescript开发微信小程序的步骤详解
2021/01/12 Javascript
Python字典的核心底层原理讲解
2019/01/24 Python
python实现LRU热点缓存及原理
2019/10/29 Python
python 基于opencv 实现一个鼠标绘图小程序
2020/12/11 Python
萌新HTML5 入门指南(二)
2020/11/09 HTML / CSS
亚瑟士美国官网:ASICS美国
2017/02/01 全球购物
应征英语教师求职信
2013/11/27 职场文书
化工专业求职信
2014/07/01 职场文书
跑吧孩子观后感
2015/06/10 职场文书
小学运动会前导词
2015/07/20 职场文书
如何用JavaScript学习算法复杂度
2021/04/30 Javascript
JavaWeb 入门:Hello Servlet
2021/07/16 Java/Android