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 相关文章推荐
jquery 子窗口操作父窗口的代码
Sep 21 Javascript
JavaScript截取字符串的2个函数介绍
Aug 27 Javascript
arguments对象验证函数的参数是否合法
Jun 26 Javascript
jstree创建无限分级树的方法【基于ajax动态创建子节点】
Oct 25 Javascript
Vue-resource拦截器判断token失效跳转的实例
Oct 27 Javascript
vue中手机号,邮箱正则验证以及60s发送验证码的实例
Mar 16 Javascript
JavaScript实现图片懒加载的方法分析
Jul 05 Javascript
实例分析JS中的相等性判断===、 ==和Object.is()
Nov 17 Javascript
JS操作Fckeditor的一些常用方法(获取、插入等)
Feb 19 Javascript
使用JavaScript实现网页秒表功能(含开始、暂停、继续、重置功能)
Jun 05 Javascript
element中table高度自适应的实现
Oct 21 Javascript
Vue 401配合Vuex防止多次弹框的案例
Nov 11 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时间戳格式化显示友好的时间函数分享
2014/10/21 PHP
php删除二维数组中的重复值方法
2018/03/12 PHP
Mootools 1.2教程 同时进行多个形变动画
2009/09/15 Javascript
javascipt基础内容--需要注意的细节
2013/04/10 Javascript
分享一则JavaScript滚动条插件源码
2015/03/03 Javascript
js图片翻书效果代码分享
2015/08/20 Javascript
js实现有过渡渐变效果的图片轮播相册(兼容IE,ff)
2016/01/19 Javascript
jQuery图片旋转插件jQueryRotate.js用法实例(附demo下载)
2016/01/21 Javascript
Vue.js快速入门实例教程
2016/10/15 Javascript
js HTML5多媒体影音播放
2016/10/17 Javascript
javascript 正则表达式去空行方法
2017/01/24 Javascript
Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )
2017/03/31 Javascript
vue.js如何更改默认端口号8080为指定端口的方法
2017/07/14 Javascript
Extjs 中的 Treepanel 实现菜单级联选中效果及实例代码
2017/08/22 Javascript
vue购物车插件编写代码
2017/11/27 Javascript
使用JS判断移动端手机横竖屏状态
2018/07/30 Javascript
使用Vue 实现滑动验证码功能
2019/06/27 Javascript
JS随机密码生成算法
2019/09/23 Javascript
vue - props 声明数组和对象操作
2020/07/30 Javascript
python使用rsa加密算法模块模拟新浪微博登录
2014/01/22 Python
在Python中定义和使用抽象类的方法
2016/06/30 Python
Scrapy爬虫实例讲解_校花网
2017/10/23 Python
Python爬取个人微信朋友信息操作示例
2018/08/03 Python
DataFrame:通过SparkSql将scala类转为DataFrame的方法
2019/01/29 Python
python实现自动化上线脚本的示例
2019/07/01 Python
PyInstaller的安装和使用的详细步骤
2020/06/02 Python
Python设计密码强度校验程序
2020/07/30 Python
详解python os.path.exists判断文件或文件夹是否存在
2020/11/16 Python
Python实现王者荣耀自动刷金币的完整步骤
2021/01/22 Python
初一英语教学反思
2014/01/11 职场文书
企业法人授权委托书
2014/09/25 职场文书
被告代理词范文
2015/05/25 职场文书
学校运动会简讯
2015/07/20 职场文书
初任公务员培训心得体会
2016/01/08 职场文书
python自动计算图像数据集的RGB均值
2021/06/18 Python
使用MybatisPlus打印sql语句
2022/04/22 SQL Server