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 相关文章推荐
单击浏览器右上角的X关闭窗口弹出提示的小例子
Jun 12 Javascript
js获取select选中的option的text示例代码
Dec 19 Javascript
js如何判断用户是否是用微信浏览器
Jun 05 Javascript
JavaScript显示当前文档最后修改日期的方法
Mar 19 Javascript
全面了解JavaScript对象进阶
Jul 19 Javascript
JavaScript lodash常见用法系列小结
Aug 24 Javascript
JS全角与半角转化实例(分享)
Jul 04 Javascript
javascript 玩转Date对象(实例讲解)
Jul 11 Javascript
详解http访问解析流程原理
Oct 18 Javascript
webpack 打包压缩js和css的方法示例
Mar 20 Javascript
Vue 实现点击空白处隐藏某节点的三种方式(指令、普通、遮罩)
Oct 23 Javascript
vue  elementUI 表单嵌套验证的实例代码
Nov 06 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
php使用MySQL保存session会话的方法
2015/06/26 PHP
php实现计算百度地图坐标之间距离的方法
2016/05/05 PHP
thinkPHP多语言切换设置方法详解
2016/11/11 PHP
原生php实现excel文件读写的方法分析
2018/04/25 PHP
如何让div span等元素能响应键盘事件操作指南
2012/11/13 Javascript
屏蔽网页右键复制和ctrl+c复制的js代码
2013/01/04 Javascript
JS加jquery简单实现标签元素的显示或隐藏
2013/09/23 Javascript
用jquery写的菜单从左往右滑动出现
2014/04/11 Javascript
seaJs的模块定义和模块加载浅析
2014/06/06 Javascript
深入理解JavaScript系列(33):设计模式之策略模式详解
2015/03/03 Javascript
js实现仿阿里巴巴城市选择框效果实例
2015/06/24 Javascript
js中flexible.js实现淘宝弹性布局方案
2020/06/23 Javascript
基于javascript实现表格的简单操作
2016/05/21 Javascript
利用node.js实现反向代理的方法详解
2017/07/24 Javascript
详解webpack require.ensure与require AMD的区别
2017/12/13 Javascript
vue文件树组件使用详解
2018/03/29 Javascript
Vue中Quill富文本编辑器的使用教程
2018/09/21 Javascript
Vue路由history模式解决404问题的几种方法
2018/09/29 Javascript
微信小程序页面缩放式侧滑效果的实现代码
2018/11/15 Javascript
8 个有用的JS技巧(推荐)
2019/07/03 Javascript
vue实现鼠标经过动画
2019/10/16 Javascript
Bootstrap table 服务器端分页功能实现方法示例
2020/06/01 Javascript
vue实现分页的三种效果
2020/06/23 Javascript
Vue $attrs &amp; inheritAttr实现button禁用效果案例
2020/12/07 Vue.js
Tensorflow 合并通道及加载子模型的方法
2018/07/26 Python
Python发送手机动态验证码代码实例
2020/02/28 Python
python实现将字符串中的数字提取出来然后求和
2020/04/02 Python
阿玛尼美妆英国官网:Giorgio Armani Beauty英国
2019/03/28 全球购物
一套中级Java程序员笔试题
2015/01/14 面试题
办公室打字员岗位职责
2014/04/16 职场文书
新员工试用期自我鉴定
2014/04/17 职场文书
新文化运动的基本口号
2014/06/21 职场文书
贷款收入证明格式
2015/06/24 职场文书
劳动保障事务所个人工作总结
2015/08/12 职场文书
2016暑期社会实践心得体会范文
2016/01/14 职场文书
AJAX实现省市县三级联动效果
2021/10/16 Javascript