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 相关文章推荐
jQuery学习7 操作JavaScript对象和集合的函数
Feb 07 Javascript
javascript处理table表格的代码
Dec 06 Javascript
getElementByIdx_x js自定义getElementById函数
Jan 24 Javascript
js获取height和width的方法说明
Jan 06 Javascript
让ie6也支持websocket采用flash封装实现
Feb 18 Javascript
Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
Aug 15 Javascript
Angular Js文件上传之form-data
Aug 28 Javascript
Vue.js 递归组件实现树形菜单(实例分享)
Dec 21 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
Jan 12 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
Feb 14 Javascript
彻底弄懂 JavaScript 执行机制
Oct 23 Javascript
JavaScript实现轮播图效果
Oct 30 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
PHP去掉从word直接粘贴过来的没有用格式的函数
2012/10/29 PHP
php模拟用户自动在qq空间发表文章的方法
2015/01/07 PHP
php+ajax实现商品对比功能示例
2019/04/13 PHP
在 PHP 和 Laravel 中使用 Traits的方法
2019/11/13 PHP
服务器安全设置的几个注册表设置
2007/07/28 Javascript
6个DIV 135或246间隔一秒轮番显示效果
2010/07/24 Javascript
document.addEventListener使用介绍
2014/03/07 Javascript
jq实现酷炫的鼠标经过图片翻滚效果
2014/03/12 Javascript
滚动条响应鼠标滑轮事件实现上下滚动的js代码
2014/06/30 Javascript
举例详解JavaScript中Promise的使用
2015/06/24 Javascript
理解 JavaScript Scoping &amp; Hoisting(二)
2015/11/18 Javascript
JSON与String互转的实现方法(Javascript)
2016/09/27 Javascript
JQuery 获取多个select标签option的text内容(实例)
2017/09/07 jQuery
详解npm 配置项registry修改为淘宝镜像
2018/09/07 Javascript
vue+django实现一对一聊天功能的实例代码
2019/07/17 Javascript
JavaScript正则表达式验证登录实例
2020/03/18 Javascript
python类继承用法实例分析
2014/10/10 Python
Python简单连接MongoDB数据库的方法
2016/03/15 Python
图文讲解选择排序算法的原理及在Python中的实现
2016/05/04 Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
2017/09/12 Python
Python3.6连接Oracle数据库的方法详解
2018/05/18 Python
kafka-python批量发送数据的实例
2018/12/27 Python
梅尔频率倒谱系数(mfcc)及Python实现
2019/06/18 Python
Swisse官方海外旗舰店:澳大利亚销量领先,自然健康品牌
2017/12/15 全球购物
联想马亚西亚官方网站:Lenovo Malaysia
2018/09/19 全球购物
纽约州一群才华横溢的金匠制作而成:Hearth Jewelry
2019/03/22 全球购物
Nanushka官网:匈牙利服装品牌
2019/08/14 全球购物
恶意软件的定义
2014/11/12 面试题
聚美优品陈欧广告词
2014/03/14 职场文书
合唱兴趣小组活动总结
2014/07/10 职场文书
工厂门卫岗位职责
2015/04/13 职场文书
学校教师师德师风承诺书
2015/04/28 职场文书
2015年十月一日放假通知
2015/08/18 职场文书
《悲惨世界》:比天空更广阔的是人的心灵
2020/01/16 职场文书
MySQL基础(二)
2021/04/05 MySQL
MySQL索引失效十种场景与优化方案
2023/05/08 MySQL