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 相关文章推荐
encode脚本和normal脚本混用的问题与解决方法
Mar 08 Javascript
新老版本juqery获取radio对象的方法
Mar 01 Javascript
两种方法基于jQuery实现IE浏览器兼容placeholder效果
Oct 14 Javascript
js遍历map javaScript遍历map的简单实现
Aug 26 Javascript
ionic 3.0+ 项目搭建运行环境的教程
Aug 09 Javascript
前端axios下载excel文件(二进制)的处理方法
Jul 31 Javascript
Vue表单及表单绑定方法
Sep 04 Javascript
JS中实现浅拷贝和深拷贝的代码详解
Jun 05 Javascript
微信小程序获取用户绑定手机号方法示例
Jul 21 Javascript
node.js中Buffer缓冲器的原理与使用方法分析
Nov 23 Javascript
Vue组件基础用法详解
Feb 05 Javascript
关于angular 8.1使用过程中的一些记录
Nov 25 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生成随机密码的几种方法
2011/01/17 PHP
php连接数据库代码应用分析
2011/05/29 PHP
php获取用户IPv4或IPv6地址的代码
2012/11/15 PHP
搭建基于Docker的PHP开发环境的详细教程
2015/07/01 PHP
AJAX的使用方法详解
2017/04/29 PHP
php自动加载代码实例详解
2021/02/26 PHP
jQuery之浮动窗口实现代码(两种方法)
2010/09/08 Javascript
浅析JQuery获取和设置Select选项的常用方法总结
2013/07/04 Javascript
JavaScript instanceof 的使用方法示例介绍
2013/10/23 Javascript
jquery中ajax函数执行顺序问题之如何设置同步
2014/02/28 Javascript
浅谈js获取ModelAndView值的问题
2018/03/28 Javascript
前端Vue项目详解--初始化及导航栏
2019/06/24 Javascript
jQuery内容选择器与表单选择器实例分析
2019/06/28 jQuery
微信小程序淘宝首页双排图片布局排版代码(推荐)
2020/10/29 Javascript
[48:02]Ti4循环赛第三日 VG vs Liquid和NEWBEE vs DK
2014/07/12 DOTA
老生常谈Python序列化和反序列化
2017/06/28 Python
Python 中的Selenium异常处理实例代码
2018/05/03 Python
Python中的支持向量机SVM的使用(附实例代码)
2019/06/26 Python
通过python改变图片特定区域的颜色详解
2019/07/15 Python
手把手教你Python yLab的绘制折线图的画法
2019/10/23 Python
详解pycharm2020.1.1专业版安装指南(推荐)
2020/08/07 Python
Html5 canvas实现粒子时钟的示例代码
2018/09/06 HTML / CSS
澳大利亚波西米亚风连衣裙在线商店:Fortunate One
2019/04/01 全球购物
LVMH旗下最大的奢侈品网站平台:24S
2020/05/24 全球购物
函授本科个人自我鉴定
2014/03/25 职场文书
党员公开承诺践诺书
2014/03/25 职场文书
运输服务质量承诺书
2014/03/27 职场文书
银行优秀员工事迹材料
2014/05/29 职场文书
应聘教师求职信
2014/07/19 职场文书
2015年组织委员工作总结
2015/04/23 职场文书
导游词之河北白洋淀
2020/01/15 职场文书
mysql部分操作
2021/04/05 MySQL
详解PHP服务器如何在有限的资源里最大提升并发能力
2021/05/25 PHP
python 详解turtle画爱心代码
2022/02/15 Python
Python requests用法和django后台处理详解
2022/03/19 Python
详细介绍Java中的CyclicBarrier
2022/04/13 Java/Android