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和JS实现奇偶行背景颜色自定义效果
Nov 19 Javascript
js格式化金额可选是否带千分位以及保留精度
Jan 28 Javascript
jQuery简单实现网页选项卡特效
Nov 24 Javascript
jQuery实现仿路边灯箱广告图片轮播效果
Apr 15 Javascript
.NET微信公众号开发之创建自定义菜单
Jul 16 Javascript
JS打字效果的动态菜单代码分享
Aug 21 Javascript
vue的toast弹窗组件实例详解
May 14 Javascript
用npm安装vue和vue-cli,并使用webpack创建项目的方法
Sep 28 Javascript
js实现移动端吸顶效果
Jan 08 Javascript
vscode 插件开发 + vue的操作方法
Jun 05 Javascript
vue 使用localstorage实现面包屑的操作
Nov 16 Javascript
JavaScript 反射学习技巧
Oct 16 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脚本
2006/11/26 PHP
php面向对象全攻略 (四)构造方法与析构方法
2009/09/30 PHP
php+jQuery+Ajax实现点赞效果的方法(附源码下载)
2020/07/21 PHP
总结PHP删除字符串最后一个字符的三种方法
2016/08/30 PHP
php将服务端的文件读出来显示在web页面实例
2016/10/31 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
2018/03/15 PHP
PHP使用观察者模式处理异常信息的方法详解
2019/09/24 PHP
php判断IP地址是否在多个IP段内
2020/08/18 PHP
JQuery 动态扩展对象之另类视角
2010/05/25 Javascript
firefox事件处理之自动查找event的函数(用于onclick=foo())
2010/08/05 Javascript
jQuery验证Checkbox是否选中的代码 推荐
2011/09/04 Javascript
前端开发过程中浏览器版本的两种判定方法
2013/10/30 Javascript
js实现window.open不被拦截的解决方法汇总
2014/10/30 Javascript
JavaScript中用toString()方法返回时间为字符串
2015/06/12 Javascript
javascript使用输出语句实现网页特效代码
2015/08/06 Javascript
举例说明如何为JavaScript的方法参数设置默认值
2015/11/17 Javascript
JavaScript+CSS实现的可折叠二级菜单实例
2016/02/29 Javascript
JavaScript中的继承之类继承
2016/05/01 Javascript
对js eval()函数的一些见解
2016/08/15 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(下)
2017/04/21 Javascript
解决Angular.js中使用Swiper插件不能滑动的问题
2018/02/26 Javascript
vuejs前后端数据交互之从后端请求数据的实例
2018/08/11 Javascript
vue使用pdfjs显示PDF可复制的实现方法
2018/12/14 Javascript
Python 逐行分割大txt文件的方法
2017/10/10 Python
pandas 透视表中文字段排序方法
2018/11/16 Python
python微信撤回监测代码
2019/04/29 Python
Python Django 封装分页成通用的模块详解
2019/08/21 Python
Django shell调试models输出的SQL语句方法
2019/08/29 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
2020/02/15 Python
One.com挪威:北欧成长最快的网络托管公司
2016/11/19 全球购物
新西兰航空中国官网:Air New Zealand China
2018/07/24 全球购物
华纳兄弟工作室的官方授权商店:WB Shop
2018/11/30 全球购物
公司募捐倡议书
2014/05/14 职场文书
写给领导的感谢信
2015/01/22 职场文书
学生保证书格式
2015/02/27 职场文书
医药公司开票员岗位职责
2015/04/15 职场文书