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 相关文章推荐
动态改变textbox的宽高的js
Oct 26 Javascript
JavaScript.The.Good.Parts阅读笔记(一)假值与===运算符
Nov 16 Javascript
动态加载js、css等文件跨iframe实现
Feb 24 Javascript
浅谈javascript:两种注释,声明变量,定义函数
Sep 29 Javascript
js实现4个方向滚动的球
Mar 06 Javascript
利用JQuery操作iframe父页面、子页面的元素和方法汇总
Sep 10 jQuery
vue iview组件表格 render函数的使用方法详解
Mar 15 Javascript
node.js实现微信开发之获取用户授权
Mar 18 Javascript
一篇文章介绍redux、react-redux、redux-saga总结
May 23 Javascript
在vue中利用v-html按分号将文本换行的例子
Nov 14 Javascript
node.JS路径解析之PATH模块使用方法详解
Feb 06 Javascript
使用Typescript开发微信小程序的步骤详解
Jan 12 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 显示指定路径下的图片
2009/10/29 PHP
CodeIgniter基本配置详细介绍
2013/11/12 PHP
PHP采用curl模仿用户登陆新浪微博发微博的方法
2014/11/07 PHP
php导入excel文件到mysql数据库的方法
2015/01/14 PHP
PHP简单计算两个时间差的方法示例
2017/06/20 PHP
PHP实现将标点符号正则替换为空格的方法
2017/08/09 PHP
鼠标滚轮改变图片大小的示例代码
2013/11/20 Javascript
js处理自己不能定义二维数组的方法详解
2014/03/03 Javascript
jQuery实现仿Google首页拖动效果的方法
2015/05/04 Javascript
javascript函数特点实例分析
2015/05/14 Javascript
jQuery实现网页顶部固定导航效果代码
2015/12/24 Javascript
jquery实现的回旋滚动效果完整实例【附demo源码下载】
2016/09/20 Javascript
jquery 手势密码插件
2017/03/17 Javascript
学习使用Bootstrap栅格系统
2017/05/11 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
2017/12/19 Javascript
vue-cli实现多页面多路由的示例代码
2018/01/30 Javascript
浅谈如何通过node.js对数据进行MD5加密
2018/05/16 Javascript
基于打包工具Webpack进行项目开发实例
2018/05/29 Javascript
浏览器JavaScript调试功能无法使用解决方案
2020/09/18 Javascript
Vue实现开关按钮拖拽效果
2020/09/22 Javascript
[04:56]经典回顾:前Ehome 与 前LGD
2015/02/26 DOTA
浅谈Python 集合(set)类型的操作——并交差
2016/06/30 Python
Python闭包和装饰器用法实例详解
2019/05/22 Python
CSS3 实用技巧:实现黑白图像效果示例代码
2013/07/11 HTML / CSS
html5自动播放mov格式视频的实例代码
2020/01/14 HTML / CSS
HTML5单选框、复选框、下拉菜单、文本域的实现代码
2020/12/01 HTML / CSS
vivo智能手机官方商城:vivo
2016/09/22 全球购物
小橄榄树:Le Petit Olivier
2018/04/23 全球购物
Ashford台湾:以折扣价提供奢华的男女用表款
2019/12/04 全球购物
Kipling澳洲官网:购买凯浦林包包
2020/12/17 全球购物
爱心捐款倡议书范文
2014/05/12 职场文书
员工工作表扬信
2015/05/05 职场文书
关于观后感的作文
2015/06/18 职场文书
三八红旗手先进事迹材料(2016推荐版)
2016/02/25 职场文书
python中pandas对多列进行分组统计的实现
2021/06/18 Python
口袋妖怪冰系十大最强精灵,几何雪花排第七,第六类似北极熊
2022/03/18 日漫