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.ajax)
Nov 19 Javascript
用javascript作一个通用向导说明
Aug 30 Javascript
DOM和XMLHttpRequest对象的属性和方法整理
Jan 04 Javascript
在JavaScript里防止事件函数高频触发和高频调用的方法
Sep 06 Javascript
浅谈Angular.js中使用$watch监听模型变化
Jan 10 Javascript
Node.js 异步异常的处理与domain模块解析
May 10 Javascript
JS简单获取并修改input文本框内容的方法示例
Apr 08 Javascript
jQuery.parseJSON()函数详解
Feb 28 jQuery
如何从头实现一个node.js的koa框架
Jun 17 Javascript
vue中使用elementUI组件手动上传图片功能
Dec 13 Javascript
Java 生成随机字符的示例代码
Jan 13 Javascript
ajax jquery实现页面某一个div的刷新效果
Mar 04 jQuery
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实现在线阅读PDF文件的方法
2015/06/17 PHP
如何打开php的gd2库
2017/02/09 PHP
PHP合并数组函数array_merge用法分析
2017/02/17 PHP
php生成网页桌面快捷方式
2017/05/05 PHP
PHP迭代器接口Iterator用法分析
2017/12/28 PHP
php代码调试利器firephp安装与使用方法分析
2018/08/21 PHP
解决Laravel blade模板转义html标签的问题
2019/09/03 PHP
javascript 强制刷新页面的实现代码
2009/12/13 Javascript
JQuery跨Iframe选择实现代码
2010/08/19 Javascript
日期处理的js库(迷你版)--自建js库总结
2011/11/21 Javascript
jquery中dom操作和事件的实例学习 下拉框应用
2011/12/01 Javascript
JS获取网页图片name属性的方法
2015/04/01 Javascript
jQuery中toggle()函数的使用实例
2015/04/17 Javascript
js网页滚动条滚动事件实例分析
2015/05/05 Javascript
Three.js学习之网格
2016/08/10 Javascript
react-router中的属性详解
2017/06/01 Javascript
利用jquery如何从json中读取数据追加到html中
2017/12/01 jQuery
JavaScript选择排序算法原理与实现方法示例
2018/08/06 Javascript
解决vue.js 数据渲染成功仍报错的问题
2018/08/25 Javascript
jQuery实现轮播图源码
2019/10/23 jQuery
js实现mp3录音通过websocket实时传送+简易波形图效果
2020/06/12 Javascript
javascript操作向表格中动态加载数据
2020/08/27 Javascript
vue调用微信JSDK 扫一扫,相册等需要注意的事项
2021/01/03 Vue.js
在Django中限制已登录用户的访问的方法
2015/07/23 Python
Python基于分析Ajax请求实现抓取今日头条街拍图集功能示例
2018/07/19 Python
Python使用random.shuffle()打乱列表顺序的方法
2018/11/08 Python
django之自定义软删除Model的方法
2019/08/14 Python
HTML5的结构和语义(2):结构
2008/10/17 HTML / CSS
UGG澳洲官网:UGG Australia
2018/04/26 全球购物
电信营业员自我评价分享
2014/01/17 职场文书
大学生期末自我鉴定
2014/02/01 职场文书
清扬洗发水广告词
2014/03/14 职场文书
幼儿园中班上学期评语
2014/04/18 职场文书
参加招聘会后的感想
2015/08/10 职场文书
详解Html5项目适配系统深色模式方案总结
2021/04/14 HTML / CSS
详解MySQL的主键查询为什么这么快
2022/04/03 MySQL