jquery 事件冒泡的介绍以及如何阻止事件冒泡


Posted in Javascript onDecember 25, 2012

什么是JS事件冒泡?
在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个事件会向这个对象的父级对象传播,从里到外,直至它被处理(父级对象所有同类事件都将被激活),或者它到达了对象层次的最顶层,即document对象(有些浏览器是window)。

如何来阻止Jquery事件冒泡?
通过一个小例子来解释

<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default5.aspx.cs"Inherits="Default5"%> 
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<htmlxmlns="http://www.w3.org/1999/xhtml"> 
<headrunat="server"> 
<title>Porschev---Jquery事件冒泡</title> 
<scriptsrc="jquery-1.3.2-vsdoc.js"type="text/javascript"></script> 
</head> 
<body> 
<formid="form1"runat="server"> 
<divid="divOne"onclick="alert('我是最外层');"> 
<divid="divTwo"onclick="alert('我是中间层!')"> 
<aid="hr_three"href="http://www.baidu.com"mce_href="http://www.baidu.com"onclick="alert('我是最里层!')">点击我</a> 
</div> 
</div> 
</form> 
</body> 
</html>

比如上面这个页面,
分为三层:divOne是第外层,divTwo中间层,hr_three是最里层;
他们都有各自的click事件,最里层a标签还有href属性。
运行页面,点击“点击我”,会依次弹出:我是最里层---->我是中间层---->我是最外层---->然后再链接到百度.
这就是事件冒泡,本来我只点击ID为hr_three的标签,但是确执行了三个alert操作。
事件冒泡过程(以标签ID表示):hr_three---->divTwo---->divOne。从最里层冒泡到最外层。

如何来阻止?
1.event.stopPropagation();

<scripttype="text/javascript"> 
$(function(){ 
$("#hr_three").click(function(event){ 
event.stopPropagation(); 
}); 
}); 
<script>

再点击“点击我”,会弹出:我是最里层,然后链接到百度

2.returnfalse;
如果头部加入的是以下代码

<scripttype="text/javascript"> 
$(function(){ 
$("#hr_three").click(function(event){ 
returnfalse; 
}); 
}); 
<script>

再点击“点击我”,会弹出:我是最里层,但不会执行链接到百度页面

由此可以看出
1.event.stopPropagation();
事件处理过程中,阻止了事件冒泡,但不会阻击默认行为(它就执行了超链接的跳转)
2.returnfalse;
事件处理过程中,阻止了事件冒泡,也阻止了默认行为(比如刚才它就没有执行超链接的跳转)
还有一种有冒泡有关的:
3.event.preventDefault();
如果把它放在头部A标签的click事件中,点击“点击我”。
会发现它依次弹出:我是最里层---->我是中间层---->我是最外层,但最后却没有跳转到百度
它的作用是:事件处理过程中,不阻击事件冒泡,但阻击默认行为(它只执行所有弹框,却没有执行超链接跳转)

Javascript 相关文章推荐
A标签触发onclick事件而不跳转的多种解决方法
Jun 27 Javascript
解析jquery中的ajax缓存问题
Dec 19 Javascript
对JavaScript中this指针的新理解分享
Jan 31 Javascript
JavaScript中调用函数的4种方式代码实例
Jul 08 Javascript
js带点自动图片轮播幻灯片特效代码分享
Sep 07 Javascript
AngularJs自定义服务之实现签名和加密
Aug 02 Javascript
js 判断数据类型的几种方法
Jan 13 Javascript
使用vux实现上拉刷新功能遇到的坑
Feb 08 Javascript
Vue-input框checkbox强制刷新问题
Apr 18 Javascript
Vue编写可显示周和月模式的日历 Vue自定义日历内容的显示
Jun 26 Javascript
对vue生命周期的深入理解
Dec 03 Vue.js
使用Typescript开发微信小程序的步骤详解
Jan 12 Javascript
js优化针对IE6.0起作用(详细整理)
Dec 25 #Javascript
js 取时间差去掉周六周日实现代码
Dec 25 #Javascript
纯js网页画板(Graphics)类简介及实现代码
Dec 24 #Javascript
Knockoutjs快速入门(经典)
Dec 24 #Javascript
Underscore.js 的模板功能介绍与应用
Dec 24 #Javascript
javascript 星级评分效果(手写)
Dec 24 #Javascript
Jquery写一个鼠标拖动效果实现原理与代码
Dec 24 #Javascript
You might like
浅析echo(),print(),print_r(),return之间的区别
2013/11/27 PHP
实现获取http内容的php函数分享
2014/02/16 PHP
PHP获取某个月最大天数(最后一天)的方法
2015/07/29 PHP
PHP数据对象PDO操作技巧小结
2016/09/27 PHP
基于PHP实现短信验证码发送次数限制
2020/07/11 PHP
javascript函数库-集合框架
2007/04/27 Javascript
跨浏览器的事件对象介绍
2012/06/27 Javascript
JavaScript中的anchor()方法使用详解
2015/06/08 Javascript
javascript下拉列表中显示树形菜单的实现方法
2015/11/17 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
2016/07/12 Javascript
javascript中的后退和刷新实现方法
2016/11/10 Javascript
利用D3.js实现最简单的柱状图示例代码
2016/12/09 Javascript
使用react-router4.0实现重定向和404功能的方法
2017/08/28 Javascript
Vue实现购物车实例代码两则
2020/05/30 Javascript
vue element-ui中table合计指定列求和实例
2020/11/02 Javascript
[15:35]教你分分钟做大人:天怒法师
2014/10/30 DOTA
[02:31]《DAC最前线》之选手酒店现场花絮
2015/01/30 DOTA
编写自定义的Django模板加载器的简单示例
2015/07/21 Python
Python复数属性和方法运算操作示例
2017/07/21 Python
python 垃圾收集机制的实例详解
2017/08/20 Python
python使用代理ip访问网站的实例
2018/05/07 Python
Python中利用LSTM模型进行时间序列预测分析的实现
2019/07/26 Python
Python如何使用Gitlab API实现批量的合并分支
2019/11/27 Python
Python request使用方法及问题总结
2020/04/26 Python
Python连接mysql数据库及简单增删改查操作示例代码
2020/08/03 Python
详解python算法常用技巧与内置库
2020/10/17 Python
基于Python中Remove函数的用法讨论
2020/12/11 Python
css3旋转木马_动力节点Java学院整理
2017/07/12 HTML / CSS
使用纯HTML5编写一款网页上的时钟的代码分享
2015/11/16 HTML / CSS
英国家喻户晓的家居商店:The Range
2019/03/25 全球购物
视光学毕业生自荐书范文
2014/02/13 职场文书
毕业自我鉴定总结
2014/03/24 职场文书
我们的节日清明节活动总结
2014/04/30 职场文书
2015中学学校工作总结
2015/07/20 职场文书
Mysql中where与on的区别及何时使用详析
2021/08/04 MySQL
Java使用Unsafe类的示例详解
2021/09/25 Java/Android