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 相关文章推荐
JavaScript 捕获窗口关闭事件
Jul 26 Javascript
简单的两种Extjs formpanel加载数据的方式
Nov 09 Javascript
JS中表单的使用小结
Jan 11 Javascript
通过JQuery将DIV的滚动条滚动到指定的位置方便自动定位
May 05 Javascript
jQuery实现的网页右下角tab样式在线客服效果代码
Oct 23 Javascript
购物车前端开发(jQuery和bootstrap3)
Aug 27 Javascript
JSON对象 详解及实例代码
Oct 18 Javascript
简单实现js浮动框
Dec 13 Javascript
React中jquery引用的实现方法
Sep 12 jQuery
详解webpack多页面配置记录
Jan 22 Javascript
微信小程序框架wepy之动态控制类名
Sep 14 Javascript
JS一次前端面试经历记录
Mar 19 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
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
2014/12/09 PHP
[IE&amp;FireFox兼容]JS对select操作
2007/01/07 Javascript
JavaScript 学习笔记(七)字符串的连接
2009/12/31 Javascript
jquery提取元素里的纯文本不包含span等里的内容
2013/09/30 Javascript
JS,Jquery获取select,dropdownlist,checkbox下拉列表框的值(示例代码)
2014/01/11 Javascript
js 实现浏览历史记录示例
2014/04/20 Javascript
Jquery焦点与失去焦点示例应用
2014/06/10 Javascript
浅析AngularJS中的生命周期和延迟处理
2015/06/18 Javascript
nodejs爬虫抓取数据乱码问题总结
2015/07/03 NodeJs
jquery实现美观的导航菜单鼠标提示特效代码
2015/09/06 Javascript
基于css3新属性transform及原生js实现鼠标拖动3d立方体旋转
2016/06/12 Javascript
JS中正则表达式全局匹配模式 /g用法详解
2017/04/01 Javascript
JS解决position:sticky的兼容性问题的方法
2017/10/17 Javascript
vue click.stop阻止点击事件继续传播的方法
2018/09/04 Javascript
vue使用echarts图表的详细方法
2018/10/22 Javascript
js中call()和apply()改变指针问题的讲解
2019/01/17 Javascript
Vue移动端右滑屏幕返回上一页附源码下载
2019/06/26 Javascript
微信小程序点餐系统开发常见问题汇总
2019/08/06 Javascript
Vue实现购物车详情页面的方法
2019/08/20 Javascript
vue实现分页加载效果
2019/12/24 Javascript
Vue中 axios delete请求参数操作
2020/08/25 Javascript
JavaScript中的Proxy对象
2020/11/27 Javascript
[05:29]2014DOTA2国际邀请赛 赛后专访:LGDNewbee顺利过关
2014/07/13 DOTA
使用python实现扫描端口示例
2014/03/29 Python
详解Django通用视图中的函数包装
2015/07/21 Python
对python中基于tcp协议的通信(数据传输)实例讲解
2019/07/22 Python
Python 最强编辑器详细使用指南(PyCharm )
2019/09/16 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
2021/02/22 Python
英国100%防污和防水的靴子:Muck Boot Company
2020/09/08 全球购物
中职毕业生自我鉴定
2014/09/13 职场文书
假释思想汇报范文
2014/10/11 职场文书
教师先进事迹材料
2014/12/16 职场文书
同意报考证明
2015/06/17 职场文书
Docker下安装Oracle19c
2022/04/13 Servers
Python使用Web框架Flask开发项目
2022/06/01 Python