深入分析js的冒泡事件


Posted in Javascript onDecember 05, 2014

在javascript的dom操作做肯定会遇到js的冒泡事件,最常见的是div弹窗事件如图解

深入分析js的冒泡事件

当点击灰色部分是弹窗消失,点击黑色部分时没有效果。

通过下面一段代码来分析js的冒泡事件

html代码:

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>js冒泡事件</title>

    <link rel="stylesheet" href="style.css">

</head>

<body>

    <div class="container">

        <h1>js冒泡事件分析</h1>

        <hr>

        <div class="box bg-gray">

            <button class="btn">

                Click me !

            </button>

        </div>

    </div>

    <script>

    var box=document.querySelector(".box"),

    btn=document.querySelector(".btn");

    box.onclick=function(event){

        alert("我是div");

    }

    btn.onclick=function(event){

        alert("我是button");

    }

    </script>

</body>

</html>

使用firefox浏览器的默认开发者工具的3d视图可以清晰的看出div层的先后顺序

深入分析js的冒泡事件

图解:

深入分析js的冒泡事件

当点击按钮时会弹出“我是button”再弹出“我是div”,因为先触发按钮事件之后触发下一层div点击事件,

事件的触发是先进先出原则。

图解:

深入分析js的冒泡事件

那么有些时候我们并不想多个事件的触发而导致冲突,所以event有stopPropagation();方法来阻止冒泡

还有一个event的方法也是比较常用的比如一个链接,点击链接时我不想跳转,则使用event.preventDefault();方法

实例代码如下

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>js冒泡事件</title>

    <link rel="stylesheet" href="style.css">

</head>

<body>

    <div class="container">

        <h1>js冒泡事件分析</h1>

        <hr>

        <div class="box bg-gray">

            <button class="btn">

                Click me !

            </button>

            <a href="http://www.liteng.org" id="link">我是链接</a>

        </div>

    </div>

    <script>

    var box=document.querySelector(".box"),

    btn=document.querySelector(".btn");

    box.onclick=function(event){

        alert("我是div");

    }

    btn.onclick=function(event){

        alert("我是button");

        event.stopPropagation();

    }

    document.getElementById('link').onclick=function(event){

        alert("我是link");

        event.preventDefault();

    }

    /*区分event.stopPropagation();和event.preventDefault();

      前者使用stopPropagation()方法阻止事件冒泡

      后者是阻止默认的行为比如阻止超链接

    */

    </script>

</body>

</html>

小伙伴们是否能够全面理解js的冒泡事件了呢,有疑问就给我留言吧

Javascript 相关文章推荐
jQuery 处理表单元素的代码
Feb 15 Javascript
javascript中常用编程知识
Apr 08 Javascript
ext combobox动态加载数据库数据(附前后台)
Jun 17 Javascript
jQuery zclip插件实现跨浏览器复制功能
Nov 02 Javascript
jQuery模拟物体自由落体运动(附演示与demo源码下载)
Jan 21 Javascript
JavaScript的ExtJS框架中数面板TreePanel的使用实例解析
May 21 Javascript
JSONP跨域请求实例详解
Jul 04 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
Sep 28 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(二)
Jan 21 Javascript
微信小程序微信支付接入开发实例详解
Apr 12 Javascript
jQuery遮罩层实例讲解
May 11 jQuery
jQuery AJAX与jQuery事件的分析讲解
Feb 18 jQuery
Javascript解析URL方法详解
Dec 05 #Javascript
jQuery不兼容input的change事件问题解决过程
Dec 05 #Javascript
Node.js中安全调用系统命令的方法(避免注入安全漏洞)
Dec 05 #Javascript
jQuery前端框架easyui使用Dialog时bug处理
Dec 05 #Javascript
Javascript实现获取窗口的大小和位置代码分享
Dec 04 #Javascript
Javascript 中创建自定义对象的方法汇总
Dec 04 #Javascript
dreamweaver 8实现Jquery自动提示
Dec 04 #Javascript
You might like
深入php多态的实现详解
2013/06/09 PHP
php include和require的区别深入解析
2013/06/17 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
2015/06/10 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
2017/08/09 PHP
PHP微信H5支付开发实例
2018/07/25 PHP
phpstorm 配置xdebug的示例代码
2019/03/31 PHP
用正则xmlHttp实现的偷(转)
2007/01/22 Javascript
网页和浏览器兼容性问题汇总(draft1)
2009/06/01 Javascript
类似CSDN图片切换效果脚本
2009/09/17 Javascript
用JS实现一个TreeMenu效果分享
2011/08/28 Javascript
jQuery循环滚动展示代码 可应用到文字和图片上
2012/05/11 Javascript
jquery属性过滤选择器使用示例
2013/06/18 Javascript
浅析node连接数据库(express+mysql)
2015/11/30 Javascript
详解angularjs 关于ui-router分层使用
2017/06/12 Javascript
静态页面实现 include 引入公用代码的示例
2017/09/25 Javascript
常用的9个JavaScript图表库详解
2017/12/19 Javascript
[原创]js实现保存文本框内容为本地文件兼容IE,chrome,火狐浏览器
2018/02/14 Javascript
详解javascript 正则表达式之分组与前瞻匹配
2018/05/30 Javascript
vue路由传参页面刷新参数丢失问题解决方案
2019/10/08 Javascript
微信小程序实现限制用户转发功能的实例代码
2020/02/22 Javascript
[51:44]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第二场
2018/04/04 DOTA
Python中最常用的操作列表的几种方法归纳
2015/04/24 Python
Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例
2017/08/31 Python
python生成每日报表数据(Excel)并邮件发送的实例
2019/02/03 Python
pygame实现俄罗斯方块游戏(基础篇3)
2019/10/29 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
2020/03/23 Python
修复iPhone的safari浏览器上submit按钮圆角bug
2012/12/24 HTML / CSS
Currentbody澳大利亚:美容仪专家
2019/11/11 全球购物
三个儿子教学反思
2014/02/03 职场文书
作风建设年活动实施方案
2014/10/24 职场文书
2015年党员创先争优承诺书
2015/01/22 职场文书
2016关于学习党章的心得体会
2016/01/15 职场文书
关于springboot配置druid数据源不生效问题(踩坑记)
2021/09/25 Java/Android
python中取整数的几种方法
2021/11/07 Python
python运行脚本文件的三种方法实例
2022/06/25 Python
Python如何加载模型并查看网络
2022/07/15 Python