JavaScript事件冒泡机制原理实例解析


Posted in Javascript onJanuary 14, 2020

这篇文章主要介绍了JavaScript事件冒泡机制原理实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

DOM事件流(event flow )存在三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段,事件冒泡顺序是由内到外进行事件传播,事件冒泡是由IE开发团队提出来的,即事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播。

听了简介介绍之后,您可能不理解,所以举个例子:

<html>
<head>
<title>js事件冒泡测试</title>
</head>
<body>
<div id='content' onclick='alert("content")'>
<div id='div' onclick='alert("div");'>
<ul onclick='alert("ul");'>
<li onclick='alert("li");'>test</li>
</ul>
</div>
</div>
</body>
</html>

点击test页签,会依次执行li的onclick、ul的onclick、div的onclick,content的onclick,从内到外执行,所以这个就是冒泡事件的简单例子

最近也遇到了这种情况,所以就去网上搜索资料,简单学习一下,就是点击一个按钮的时候,竟然触发了两次,通过排查,发现了冒泡机制导致的,解决方法是禁用事件冒泡机制

w3c的方法是e.stopPropagation(),IE则是使用e.cancelBubble = true

$(element).click(function(e){
  e.stopPropagation();//ie e.cancelBubble = true
});

当然除了冒泡机制会导致onclick被调用两次外,事件被绑定2次的情况也有可能,解决方法是解除事件,然后再绑定

$(element).unbind('click').click(function() {
    // todo  
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 支持ie和firefox杰奇翻页函数
Jul 22 Javascript
jQuery 浮动广告实现代码
Dec 25 Javascript
js 回车提交表单两种实现方法
Dec 31 Javascript
JavaScript 获取任一float型小数点后两位的小数
Jun 30 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(二)
Dec 10 Javascript
JavaScript必知必会(七)js对象继承
Jun 08 Javascript
js手机号批量滚动抽奖实现代码
Apr 17 Javascript
zTree 树插件实现全国五级地区点击后加载的示例
Feb 05 Javascript
Angular4 反向代理Details实践
May 30 Javascript
vue实现搜索功能
May 28 Javascript
JavaScript随机数的组合问题案例分析
May 16 Javascript
JS 数组和对象的深拷贝操作示例
Jun 06 Javascript
JS window对象简单操作完整示例
Jan 14 #Javascript
让mocha支持ES6模块的方法实现
Jan 14 #Javascript
JavaScript遍历数组的方法代码实例
Jan 14 #Javascript
JavaScript回调函数callback用法解析
Jan 14 #Javascript
JS document对象简单用法完整示例
Jan 14 #Javascript
JS document内容及样式操作完整示例
Jan 14 #Javascript
微信小程序indexOf的替换方法(推荐)
Jan 14 #Javascript
You might like
解析PHP的Yii框架中cookie和session功能的相关操作
2016/03/17 PHP
PHP中散列密码的安全性分析
2019/07/26 PHP
Laravel-添加后台模板AdminLte的实现方法
2019/10/08 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
js控制框架刷新
2008/08/01 Javascript
js实时监听文本框状态的方法
2011/04/26 Javascript
Three.js源码阅读笔记(Object3D类)
2012/12/27 Javascript
网页中可关闭的漂浮窗口实现可自行调节
2013/08/20 Javascript
js如何取消事件冒泡
2013/09/23 Javascript
jQuery取id有.的值的方法
2014/05/21 Javascript
jquery提示效果实例分析
2014/11/25 Javascript
JavaScript实现的简单幂函数实例
2015/04/17 Javascript
jQuery+HTML5实现手机摇一摇换衣特效
2015/06/05 Javascript
js中javascript:void(0) 真正含义
2020/11/05 Javascript
jQuery实现右下角可缩放大小的层完整实例
2016/06/20 Javascript
微信小程序tabbar不显示解决办法
2017/06/08 Javascript
微信小程序实现选择地址省市区三级联动
2020/06/21 Javascript
关于better-scroll插件的无法滑动bug(2021通过插件解决)
2021/03/01 Javascript
[07:49]2014DOTA2国际邀请赛 Newbee夺冠后采访xiao8坦言奖金会上交
2014/07/23 DOTA
[43:14]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
Python3基础之条件与循环控制实例解析
2014/08/13 Python
在Python中过滤Windows文件名中的非法字符方法
2019/06/10 Python
Python正则表达式急速入门(小结)
2019/12/16 Python
Python求凸包及多边形面积教程
2020/04/12 Python
Python并发爬虫常用实现方法解析
2020/11/19 Python
IE9对HTML5中部分属性不支持的原因分析
2014/10/15 HTML / CSS
台湾前三大B2C购物网站:MOMO购物网
2017/04/27 全球购物
Stutterheim瑞典:瑞典高级外套时装品牌
2019/06/24 全球购物
.NET常见笔试题集
2012/12/01 面试题
服装厂厂长职责
2013/12/16 职场文书
社区国庆节活动方案
2014/02/05 职场文书
汉语言文学毕业生自荐信范文
2014/03/24 职场文书
购房意向书
2014/04/01 职场文书
2014乡镇党政班子四风问题思想汇报
2014/09/14 职场文书
医学检验专业自荐信
2014/09/18 职场文书
MybatisPlus代码生成器的使用方法详解
2021/06/13 Java/Android