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调试说明
Jun 07 Javascript
JSON+JavaScript处理JSON的简单例子
Mar 20 Javascript
5个可以帮你理解JavaScript核心闭包和作用域的小例子
Oct 08 Javascript
jQuery学习笔记之创建DOM元素
Jan 19 Javascript
vue.js2.0点击获取自己的属性和jquery方法
Feb 23 jQuery
vue 实现边输入边搜索功能的实例讲解
Sep 16 Javascript
学习LayUI时自研的表单参数校验框架案例分析
Jul 29 Javascript
详解BootStrap表单验证中重置BootStrap-select验证提示不清除的坑
Sep 17 Javascript
vue vantUI实现文件(图片、文档、视频、音频)上传(多文件)
Oct 15 Javascript
Vue+ElementUI table实现表格分页
Dec 14 Javascript
微信小程序如何实现精确的日期时间选择器
Jan 21 Javascript
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
Nov 20 Vue.js
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
BBS(php &amp; mysql)完整版(八)
2006/10/09 PHP
针对初学PHP者的疑难问答(2)
2006/10/09 PHP
php 远程图片保存到本地的函数类
2008/12/08 PHP
php 图像函数大举例(非原创)
2009/06/20 PHP
Yii框架连表查询操作示例
2019/09/06 PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
2021/02/26 PHP
jQuery的12招常用技巧分享
2011/08/08 Javascript
javascript解决innerText浏览器兼容问题思路代码
2013/05/17 Javascript
点击弹出层外区域关闭弹出层jquery特效示例
2013/08/25 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
2015/02/20 Javascript
jQuery实现的Tab滑动选项卡及图片切换(多种效果)小结
2015/09/14 Javascript
浅谈jQuery 中的事件冒泡和阻止默认行为
2016/05/28 Javascript
Three.js学习之文字形状及自定义形状
2016/08/01 Javascript
jquery css实现邮箱自动补全
2016/11/14 Javascript
小程序tab页无法传递参数的方法
2018/08/03 Javascript
微信小程序 image组件遇到的问题
2019/05/28 Javascript
解决layui页面按钮点击无反应,也不报错的问题
2019/09/29 Javascript
Vue实现导航栏的显示开关控制
2019/11/01 Javascript
Javascript异步编程async实现过程详解
2020/04/02 Javascript
vue-iview动态新增和删除的方法
2020/06/17 Javascript
three.js欧拉角和四元数的使用方法
2020/07/26 Javascript
VSCode 添加自定义注释的方法(附带红色警戒经典注释风格)
2020/08/27 Javascript
在pandas多重索引multiIndex中选定指定索引的行方法
2018/11/16 Python
python ipset管理 增删白名单的方法
2019/01/14 Python
Python中psutil的介绍与用法
2019/05/02 Python
django之使用celery-把耗时程序放到celery里面执行的方法
2019/07/12 Python
理解Django 中Call Stack机制的小Demo
2020/09/01 Python
EVE LOM英国官网:全世界最好的洁面膏
2017/10/30 全球购物
全球立体声:World Wide Stereo
2018/09/29 全球购物
Amcal中文官网:澳洲综合性连锁药房
2019/03/28 全球购物
生产主管岗位职责
2013/11/10 职场文书
奶茶专卖店创业计划书
2014/01/18 职场文书
红领巾心向党广播稿
2014/01/19 职场文书
学生打架检讨书大全
2014/01/23 职场文书
2015年检验员工作总结范文
2015/04/30 职场文书
golang日志包logger的用法详解
2021/05/05 Golang