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 相关文章推荐
JS 用6N±1法求素数 实例教程
Oct 20 Javascript
javaScript call 函数的用法说明
Apr 09 Javascript
Javascript this 的一些学习总结
Aug 02 Javascript
使用focus方法让光标默认停留在INPUT框
Jul 29 Javascript
jquery插件unobtrusive实现片段式加载
Jun 15 Javascript
基于Jquery和html5的7款个性化地图插件
Nov 17 Javascript
详解maxlength属性在textarea里奇怪的表现
Dec 27 Javascript
前端jquery部分很精彩
May 03 Javascript
微信小程序商城项目之侧栏分类效果(1)
Apr 17 Javascript
利用javascript如何随机生成一定位数的密码
Sep 22 Javascript
Vue中在新窗口打开页面及Vue-router的使用
Jun 13 Javascript
electron 如何将任意资源打包的方法步骤
Apr 16 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
PHPMailer邮件类利用smtp.163.com发送邮件方法
2008/09/11 PHP
ThinkPHP CURD方法之data方法详解
2014/06/18 PHP
php通过array_merge()函数合并两个数组的方法
2015/03/18 PHP
PHP生成推广海报的方法分享
2018/04/22 PHP
扩展Jquery插件处理mouseover时内部有子元素时发生样式闪烁
2011/12/08 Javascript
JavaScript对象和字串之间的转换实例探讨
2013/04/21 Javascript
JavaScript计算字符串中每个字符出现次数的小例子
2013/07/02 Javascript
屏蔽script注入小例子
2013/11/12 Javascript
JavaScript利用正则表达式去除日期中的“-”
2014/07/01 Javascript
js实现鼠标悬停图片上时滚动文字说明的方法
2015/02/17 Javascript
javascript创建函数的20种方式汇总
2015/06/23 Javascript
javascript电商网站抢购倒计时效果实现
2015/11/19 Javascript
JavaScript实现瀑布流布局
2020/06/28 Javascript
在Node.js中使用Javascript Generators详解
2016/05/05 Javascript
老生常谈JavaScript中的this关键字
2016/10/01 Javascript
原生javascript实现的ajax异步封装功能示例
2016/11/03 Javascript
B/S(Web)实时通讯解决方案分享
2017/04/06 Javascript
js设计模式之代理模式及订阅发布模式实例详解
2019/08/15 Javascript
[02:18]《我与DAC》之工作人员:为了热爱DOTA2的玩家们
2018/03/28 DOTA
Python中使用MELIAE分析程序内存占用实例
2015/02/18 Python
python实现的正则表达式功能入门教程【经典】
2017/06/05 Python
Python使用sqlite3模块内置数据库
2020/05/07 Python
python中np是做什么的
2020/07/21 Python
Python+OpenCV图像处理——实现直线检测
2020/10/23 Python
快时尚眼镜品牌,全国连锁眼镜店:LOHO眼镜生活
2018/10/08 全球购物
资生堂英国官网:Shiseido英国
2020/12/30 全球购物
思想汇报范文
2013/11/04 职场文书
开办化妆品公司创业计划书
2013/12/26 职场文书
文员岗位职责范本
2014/03/08 职场文书
教师年度考核评语
2014/04/28 职场文书
真诚的求职信
2014/07/04 职场文书
社区领导班子四风问题原因分析及整改措施
2014/09/28 职场文书
小学老师对学生的评语
2014/12/29 职场文书
PHP实现考试倒计时功能代码
2021/04/16 PHP
再次探讨go实现无限 buffer 的 channel方法
2021/06/13 Golang
Python操作CSV格式文件的方法大全
2021/07/15 Python