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 相关文章推荐
document.getElementById的简写方式(获取id对象的简略写法)
Sep 10 Javascript
jQuery 插件仿百度搜索框智能提示(带Value值)
Jan 22 Javascript
js表头排序实现方法
Jan 16 Javascript
浅谈被jQuery抛弃的函数及替代函数
May 03 Javascript
JavaScript动态添加style节点的方法
Jun 09 Javascript
详解AngularJS中的表达式使用
Jun 16 Javascript
JavaScript实现标题栏文字轮播效果代码
Oct 24 Javascript
微信小程序实现列表下拉刷新上拉加载
Jul 29 Javascript
vue双向数据绑定知识点总结
Apr 18 Javascript
vue中实现图片压缩 file文件的方法
May 28 Javascript
Paypal支付不完全指北
Jun 04 Javascript
node.js 基于 STMP 协议和 EWS 协议发送邮件
Feb 14 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
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
2010/02/08 PHP
PHP大神的十大优良习惯
2016/09/14 PHP
THINKPHP截取中文字符串函数实例代码
2017/03/20 PHP
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
JS 创建对象(常见的几种方法)
2008/11/03 Javascript
模仿JQuery.extend函数扩展自己对象的js代码
2009/12/09 Javascript
javascript图片相似度算法实现 js实现直方图和向量算法
2014/01/14 Javascript
jQuery中empty()方法用法实例
2015/01/16 Javascript
Javascript动态创建div的方法
2015/02/09 Javascript
详解JavaScript对W3C DOM模版的支持情况
2015/06/16 Javascript
JS自动倒计时30秒后按钮才可用(两种场景)
2015/08/31 Javascript
web 屏蔽BackSpace键实例代码
2016/12/24 Javascript
javascript history对象详解
2017/02/09 Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
2017/03/07 Javascript
js实现年月日表单三级联动
2020/04/17 Javascript
详解vue2父组件传递props异步数据到子组件的问题
2017/06/29 Javascript
浅谈Vue数据绑定的原理
2018/01/08 Javascript
vue的style绑定background-image的方式和其他变量数据的区别详解
2018/09/03 Javascript
利用es6 new.target来对模拟抽象类的方法
2019/05/10 Javascript
JS数组扁平化(flat)方法总结详解
2019/06/24 Javascript
javascript实现前端分页效果
2020/06/24 Javascript
Vue 实现对quill-editor组件中的工具栏添加title
2020/08/03 Javascript
将Dataframe数据转化为ndarry数据的方法
2018/06/28 Python
python绘制漏斗图步骤详解
2019/03/04 Python
Python实现CAN报文转换工具教程
2020/05/05 Python
Python流程控制语句的深入讲解
2020/06/15 Python
Office DEPOT法国官网:欧迪办公用品采购
2018/01/03 全球购物
英国性能汽车零件和发动机配件在线:Maxpeedingrods
2019/11/05 全球购物
园林设计专业毕业生求职信
2014/03/23 职场文书
警示教育活动总结
2014/05/05 职场文书
教师自我剖析材料(四风问题)
2014/09/30 职场文书
茶花女读书笔记
2015/06/29 职场文书
2016读书月活动心得体会
2016/01/14 职场文书
PHP命令行与定时任务
2021/04/01 PHP
分析Java中Map的遍历性能问题
2021/06/26 Java/Android
JavaScript中的宏任务和微任务详情
2021/11/27 Javascript