深入分析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 相关文章推荐
仿服务器端脚本方式的JS模板实现方法
Apr 27 Javascript
jQuery jcrop插件截图使用方法
Nov 20 Javascript
jQuery 设置 CSS 属性示例介绍
Jan 16 Javascript
jQuery中$.get、$.post、$.getJSON和$.ajax的用法详解
Nov 19 Javascript
体验jQuery和AngularJS的不同点及AngularJS的迷人之处
Feb 02 Javascript
javascript实现任务栏消息提示的简单实例
May 31 Javascript
Javascript基础学习笔记(菜鸟必看篇)
Jul 22 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
Dec 14 Javascript
jquery对象与DOM对象转化
Feb 08 Javascript
Koa代理Http请求的示例代码
Oct 10 Javascript
Vue结合后台导入导出Excel问题详解
Feb 19 Javascript
vue遍历对象中的数组取值示例
Nov 07 Javascript
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
一个分页的论坛
2006/10/09 PHP
PHP排序算法的复习和总结
2012/02/15 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
2013/06/03 PHP
PHP输出九九乘法表代码实例
2015/03/27 PHP
PHP.vs.JAVA
2016/04/29 PHP
php简单实现数组分页的方法
2016/04/30 PHP
php注册审核重点解析(数据访问)
2017/05/23 PHP
js查找父节点的简单方法
2008/06/28 Javascript
jQuery中children()方法用法实例
2015/01/07 Javascript
JavaScript中的闭包介绍
2015/03/15 Javascript
TypeScript 中接口详解
2015/06/19 Javascript
关于webpack2和模块打包的新手指南(小结)
2017/08/07 Javascript
简单快速的实现js计算器功能
2017/08/17 Javascript
基于打包工具Webpack进行项目开发实例
2018/05/29 Javascript
vue中各选项及钩子函数执行顺序详解
2018/08/25 Javascript
在vue中读取本地Json文件的方法
2018/09/06 Javascript
微信小程序实现签到弹窗动画
2020/09/21 Javascript
ant design pro中可控的筛选和排序实例
2020/11/17 Javascript
[02:49]DAC2018决赛日TOP5 LGD开启黑暗之门绝杀VP
2018/04/08 DOTA
Pyramid添加Middleware的方法实例
2013/11/27 Python
python常用知识梳理(必看篇)
2017/03/23 Python
对python程序内存泄漏调试的记录
2018/06/11 Python
使用pytorch实现可视化中间层的结果
2019/12/30 Python
Python Flask异步发送邮件实现方法解析
2020/08/01 Python
通过HTML5规范搞定i、em、b、strong元素的区别
2017/03/04 HTML / CSS
mysql的最长数据库名,表名,字段名可以是多长
2014/04/21 面试题
Tomcat中怎么使用log4j输出所有的log
2016/07/07 面试题
什么是岗位职责
2013/11/12 职场文书
管理科学大学生求职信
2013/11/13 职场文书
大学在校生求职信范文
2013/11/21 职场文书
销售队伍口号
2014/06/11 职场文书
研究生导师推荐信
2014/09/06 职场文书
学习党的群众路线对照检查材料
2014/09/29 职场文书
2016年小学生教师节广播稿
2015/12/18 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书
anaconda python3.8安装后降级
2021/06/11 Python