JS冒泡事件的快速解决方法


Posted in Javascript onDecember 16, 2013

何为冒泡事件
就是当设定了多个div的嵌套时;即建立了父子关系,当父div与子div共同加入了onclick事件时,当触发了子div的onclick事件后,子div进行相应的js操作。但是父div的onclick事件同样会被触发。这就造成了事件的多层并发,导致了页面混乱。这就是冒泡事件。

消除冒泡事件的方法
阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)

下面的一段代码即可以很好的解释是么是冒泡效果,什么叫消除冒泡效果

<html> 
<head> 
<title> 阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)</title> 
<meta name="keywords" content="JavaScript,事件冒泡,cancelBubble,stopPropagation" /> 
<script type="text/javascript"> 
function doSomething (obj,evt) { 
alert(obj.id); 
var e=(evt)?evt:window.event; //判断浏览器的类型,在基于ie内核的浏览器中的使用cancelBubble
if (window.event) { 
e.cancelBubble=true; 
} else { 
//e.preventDefault(); //在基于firefox内核的浏览器中支持做法stopPropagation
e.stopPropagation(); 
} 
} 
</script> 
</head> 
<body> 
<div id="parent1" onclick="alert(this.id)" style="width:250px;background-color:yellow"> 
<p>This is parent1 div.</p> 
<div id="child1" onclick="alert(this.id)" style="width:200px;background-color:orange"> 
<p>This is child1.</p> 
</div> 
<p>This is parent1 div.</p> 
</div> 
<br /> 
<div id="parent2" onclick="alert(this.id)" style="width:250px;background-color:cyan;"> 
<p>This is parent2 div.</p> 
<div id="child2" onclick="doSomething(this,event);" style="width:200px;background-color:lightblue;"> 
<p>This is child2. Will bubble.</p> 
</div> 
<p>This is parent2 div.</p> 
</div> 
</body> 
</html>

把代码直接复制后,打开当点击child1时不仅会弹出 child1 对话框还会弹出 parent1

这就是冒泡事件

但是单击chile2只会弹出child2却不会弹出 parent2,这便是应用了阻止冒泡事件的特效的效果.

Javascript 相关文章推荐
combox改进版 页面原型参考dojo的,比网上jQuery的那些combox功能强,代码更小
Apr 15 Javascript
js 控制图片大小核心讲解
Oct 09 Javascript
js读写cookie实现一个底部广告浮层效果的两种方法
Dec 29 Javascript
Jquery获取和修改img的src值的方法
Feb 17 Javascript
jquery获取对象的方法足以应付常见的各种类型的对象
May 14 Javascript
jQuery中:reset选择器用法实例
Jan 04 Javascript
jQuery实现菜单感应鼠标滑动动画效果的方法
Feb 28 Javascript
javascript每日必学之继承
Feb 23 Javascript
JavaScript的ExtJS框架中表格的编写教程
May 21 Javascript
详解JavaScript中this的指向问题
Jan 20 Javascript
React事件处理的机制及原理
Dec 03 Javascript
JS面向对象编程实现的Tab选项卡案例详解
Mar 03 Javascript
JS批量操作CSS属性详细解析
Dec 16 #Javascript
js鼠标及对象坐标控制属性详细解析
Dec 14 #Javascript
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
Dec 14 #Javascript
利用javascript实现禁用网页上所有文本框,下拉菜单,多行文本域
Dec 14 #Javascript
js获取url中指定参数值的示例代码
Dec 14 #Javascript
Js实现双击鼠标自动滚动屏幕的示例代码
Dec 14 #Javascript
鼠标移到div,浮层显示明细,弹出层与div的上边距左边距重合(示例代码)
Dec 14 #Javascript
You might like
星际争霸教主Flash的ID由来:你永远不会知道他之前的ID是www!
2019/01/18 星际争霸
php一个找二层目录的小东东
2012/08/02 PHP
php多文件上传功能实现原理及代码
2013/04/18 PHP
php读取富文本的时p标签会出现红线是怎么回事
2014/05/13 PHP
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
2015/03/26 PHP
Laravel SQL语句记录方式(推荐)
2016/05/26 PHP
php源码 fsockopen获取网页内容实例详解
2016/09/24 PHP
PHP实现多图上传和单图上传功能
2018/05/17 PHP
详解在YII2框架中使用UEditor编辑器发布文章
2018/11/02 PHP
jquery UI 1.72 之datepicker
2009/12/29 Javascript
Jquery Autocomplete 结合asp.net使用要点
2010/10/29 Javascript
js屏蔽鼠标键盘(右键/Ctrl+N/Shift+F10/F11/F5刷新/退格键)
2013/01/24 Javascript
最简单的JavaScript验证整数、小数、实数、有效位小数正则表达式
2015/04/17 Javascript
jquery+html5烂漫爱心表白动画代码分享
2015/08/24 Javascript
深入浅析JavaScript中with语句的理解
2016/05/12 Javascript
浅述节点的创建及常见功能的实现
2016/12/15 Javascript
angular仿支付宝密码框输入效果
2017/03/25 Javascript
vue获取input输入值的问题解决办法
2017/10/17 Javascript
javaScript canvas实现(画笔大小 颜色 橡皮的实例)
2017/11/28 Javascript
JavaScript闭包与作用域链实例分析
2019/01/21 Javascript
微信小程序表单验证插件WxValidate的二次封装功能(终极版)
2019/09/03 Javascript
JS代码实现页面切换效果
2021/01/10 Javascript
Python优化技巧之利用ctypes提高执行速度
2016/09/11 Python
Python字典,函数,全局变量代码解析
2017/12/18 Python
解决Matplotlib图表不能在Pycharm中显示的问题
2018/05/24 Python
python 画三维图像 曲面图和散点图的示例
2018/12/29 Python
python用opencv批量截取图像指定区域的方法
2019/01/24 Python
Python自动化之数据驱动让你的脚本简洁10倍【推荐】
2019/06/04 Python
django使用xadmin的全局配置详解
2019/11/15 Python
Python实现删除某列中含有空值的行的示例代码
2020/07/20 Python
怀旧香味蜡烛:Homesick
2019/11/02 全球购物
软件测试常见笔试题
2012/02/04 面试题
无工作经验者个人求职信范文
2013/12/22 职场文书
大学生饮食连锁店创业计划书
2014/01/17 职场文书
大学学雷锋活动总结
2014/06/26 职场文书
python基础之文件操作
2021/10/24 Python