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 相关文章推荐
下载网站打开页面后间隔多少时间才显示下载链接地址的代码
Apr 25 Javascript
jquery插件制作 自增长输入框实现代码
Aug 17 jQuery
在每个匹配元素的外部插入新元素的方法
Dec 20 Javascript
jQuery中on()方法用法实例详解
Feb 06 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
Sep 19 Javascript
require、backbone等重构手机图片查看器
Nov 17 Javascript
AngularJS表格添加序号的方法
Mar 03 Javascript
jQuery ajax动态生成table功能示例
Jun 14 jQuery
JavaScript引用类型Date常见用法实例分析
Aug 08 Javascript
jQuery实现的简单歌词滚动功能示例
Jan 07 jQuery
解决elementui表格操作列自适应列宽
Dec 28 Javascript
vue 组件基础知识总结
Jan 26 Vue.js
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
DOTA2 1月28日更新:监管系统降临刀塔世界
2021/01/28 DOTA
php入门学习知识点七 PHP函数的基本应用
2011/07/14 PHP
PHP下使用CURL方式POST数据至API接口的代码
2013/02/14 PHP
常用PHP数组排序函数归纳
2016/08/08 PHP
yii2简单使用less代替css示例
2017/03/10 PHP
JavaScript Date对象 日期获取函数
2010/12/19 Javascript
JS添加删除一组文本框并对输入信息加以验证判断其正确性
2013/04/11 Javascript
jquery动态添加删除div 具体实现
2013/07/20 Javascript
jquery批量控制form禁用的代码
2013/08/06 Javascript
jQuery弹出框代码封装DialogHelper
2015/01/30 Javascript
谈谈JavaScript的New关键字
2016/08/26 Javascript
纯JS实现表单验证实例
2016/12/24 Javascript
Vuex之理解Mutations的用法实例
2017/04/19 Javascript
jquery的 filter()方法使用教程
2018/03/22 jQuery
express默认日志组件morgan的方法
2018/04/05 Javascript
Vue触发式全局组件构建的方法
2018/11/28 Javascript
vue elementui el-form rules动态验证的实例代码详解
2019/05/23 Javascript
Vue脚手架编写试卷页面功能
2020/03/17 Javascript
js实现鼠标切换图片(无定时器)
2021/01/27 Javascript
简单介绍Python中的RSS处理
2015/04/13 Python
使用Python脚本来控制Windows Azure的简单教程
2015/04/16 Python
Python工程师面试题 与Python基础语法相关
2016/01/14 Python
python 禁止函数修改列表的实现方法
2017/08/03 Python
Python3使用TCP编写一个简易的文件下载器功能
2019/05/08 Python
解决python3 安装不了PIL的问题
2019/08/16 Python
django中上传图片分页三级联动效果的实现代码
2019/08/30 Python
pycharm 2018 激活码及破解补丁激活方式
2020/09/21 Python
犹他州最古老的体育用品公司:Al’s
2020/12/18 全球购物
区域总监的岗位职责
2013/11/21 职场文书
营销总监岗位职责范本
2014/02/26 职场文书
《广玉兰》教学反思
2014/04/14 职场文书
中学生社会实践活动总结
2014/07/03 职场文书
我们的节日国庆活动方案
2014/08/19 职场文书
《自己的花是让别人看的》教学反思
2016/02/19 职场文书
Golang标准库syscall详解(什么是系统调用)
2021/05/25 Golang
Golang 字符串的常见操作
2022/04/19 Golang