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 相关文章推荐
js加强的经典分页实例
Mar 15 Javascript
js中创建对象的几种方式示例介绍
Jan 26 Javascript
Bootstrap项目实战之首页内容介绍(全)
Apr 25 Javascript
JavaScript给每一个li节点绑定点击事件的实现方法
Dec 01 Javascript
Javascript 使用ajax与C#获取文件大小实例详解
Jan 13 Javascript
微信小程序 JS动态修改样式的实现代码
Feb 10 Javascript
AngularJS之自定义服务详解(factory、service、provider)
Apr 14 Javascript
vue购物车插件编写代码
Nov 27 Javascript
Vue 使用 Mint UI 实现左滑删除效果CellSwipe
Apr 27 Javascript
微信网页授权并获取用户信息的方法
Jul 30 Javascript
详解JavaScript修改注册表的方法
Jan 05 Javascript
Postman环境变量全局变量使用方法详解
Aug 13 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的宝库目录--PEAR
2006/10/09 PHP
一贴学会PHP 新手入门教程
2009/08/03 PHP
php下使用strpos需要注意 === 运算符
2010/07/17 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
Dom加载让图片加载完再执行的脚本代码
2008/05/15 Javascript
YUI Compressor压缩JavaScript原理及微优化
2013/01/07 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
2013/12/10 Javascript
javascript中验证大写字母、数字和中文
2014/01/15 Javascript
给js文件传参数(详解)
2014/07/13 Javascript
基于JavaScript代码实现pc与手机之间的跳转
2015/12/23 Javascript
JavaScript高级程序设计(第三版)学习笔记1~5章
2016/03/11 Javascript
JS获取IMG图片高宽的简单实例
2016/05/17 Javascript
JS实现页面载入时随机显示图片效果
2016/09/07 Javascript
EasyUI Combobox设置默认值 获取text的方法
2016/11/28 Javascript
jQuery中DOM节点删除之empty与remove
2017/01/20 Javascript
angular使用bootstrap方法手动启动的实例代码
2017/07/18 Javascript
中高级前端必须了解的JS中的内存管理(推荐)
2019/07/04 Javascript
js实现数字跳动到指定数字
2020/08/25 Javascript
Vue使用v-viewer实现图片预览
2020/10/21 Javascript
python采集百度百科的方法
2015/06/05 Python
Python之列表的插入&amp;替换修改方法
2018/06/28 Python
对Python3之方法的覆盖与super函数详解
2019/06/26 Python
全面了解django的缓存机制及使用方法
2019/07/22 Python
python爬虫豆瓣网的模拟登录实现
2019/08/21 Python
python多继承(钻石继承)问题和解决方法简单示例
2019/10/21 Python
python列表生成器迭代器实例解析
2019/12/19 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
2020/01/25 Python
浅谈PyTorch的可重复性问题(如何使实验结果可复现)
2020/02/20 Python
opencv之颜色过滤只留下图片中的红色区域操作
2020/06/05 Python
Python 内存管理机制全面分析
2021/01/16 Python
《望洞庭》教学反思
2014/02/16 职场文书
报告会主持词
2014/04/02 职场文书
反腐倡廉影片观后感
2015/06/08 职场文书
幼儿教师远程研修感悟
2015/11/18 职场文书
go 实现简易端口扫描的示例
2021/05/22 Golang