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 相关文章推荐
自适应图片大小的弹出窗口
Jul 27 Javascript
HTML颜色选择器实现代码
Nov 23 Javascript
实用的Jquery选项卡TAB示例代码
Aug 28 Javascript
jQuery中parents()和parent()的区别分析
Oct 28 Javascript
jQuery实现首页顶部可伸缩广告特效代码
Apr 15 Javascript
详解Angular开发中的登陆与身份验证
Jul 27 Javascript
jQuery复制节点用法示例(clone方法)
Sep 08 Javascript
Bootstrap面板使用方法
Jan 16 Javascript
性能优化之代码优化页面加载速度
Mar 01 Javascript
HTML5开发Kinect体感游戏的实例应用
Sep 18 Javascript
JS实现的缓冲运动效果示例
Apr 30 Javascript
javascript实现鼠标点击生成文字特效
Dec 24 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过滤危险html代码
2008/08/18 PHP
PHP回溯法解决0-1背包问题实例分析
2015/03/23 PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
2015/05/13 PHP
PHP使用php-resque库配合Redis实现MQ消息队列的教程
2016/06/29 PHP
PHP生成(支持多模板)二维码海报代码
2018/04/30 PHP
JavaScript Base64编码和解码,实现URL参数传递。
2006/09/18 Javascript
js 利用className得到对象的实现代码
2011/11/15 Javascript
JavaScript插入动态样式实现代码
2012/02/22 Javascript
基于JQuery的一句话搞定手风琴菜单
2012/09/14 Javascript
jquery ajax jsonp跨域调用实例代码
2013/12/11 Javascript
js中的事件捕捉模型与冒泡模型实例分析
2015/01/10 Javascript
js兼容pc端浏览器并有多种弹出小提示的手机端浮层控件实例
2015/04/29 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
5分钟打造简易高效的webpack常用配置
2017/07/04 Javascript
解决vue 按钮多次点击重复提交数据问题
2018/05/10 Javascript
JavaScript 继承 封装 多态实现及原理详解
2019/07/29 Javascript
[54:51]Ti4 冒泡赛第二轮LGD vs C9 3
2014/07/14 DOTA
python 数据提取及拆分的实现代码
2019/08/26 Python
keras中的卷积层&amp;池化层的用法
2020/05/22 Python
HTML5 canvas基本绘图之文字渲染
2016/06/27 HTML / CSS
澳大利亚床上用品、浴巾和家居用品购物网站:Bambury
2020/04/16 全球购物
盛大笔试题
2016/11/05 面试题
自动化专业毕业生自荐信
2013/11/01 职场文书
优秀毕业大学生推荐信
2013/11/13 职场文书
自主招生自荐信格式
2013/12/03 职场文书
法律专业实习鉴定
2013/12/22 职场文书
揭牌仪式策划方案
2014/05/28 职场文书
文明城市创建标语
2014/06/16 职场文书
工作求职信
2014/07/04 职场文书
大学生创业计划书怎么写
2014/09/15 职场文书
教师工作失职检讨书
2014/09/18 职场文书
单位实习工作证明怎么写
2014/11/02 职场文书
暑假生活随笔
2015/08/15 职场文书
谢师宴学生答谢词
2015/09/30 职场文书
2016年12月份红领巾广播稿
2015/12/21 职场文书
2016入党积极分子党课培训心得体会
2016/01/06 职场文书