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 相关文章推荐
关于Javascript 的 prototype问题。
Jan 03 Javascript
javascript 关于# 和 void的区别分析
Oct 26 Javascript
javascript Array数组对象的扩展函数代码
May 22 Javascript
js控制CSS样式属性语法对照表
Dec 11 Javascript
jQuery随机切换图片的小例子
Apr 18 Javascript
开源的javascript项目Kissy介绍
Nov 28 Javascript
百度地图API之本地搜索与范围搜索
Jul 30 Javascript
canvas实现绘制吃豆鱼效果
Jan 12 Javascript
JS字符串false转boolean的方法(推荐)
Mar 08 Javascript
JavaScript 中 apply 、call 的详解
Mar 21 Javascript
vue-router 导航钩子的具体使用方法
Aug 31 Javascript
js数组实现权重概率分配
Sep 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
PHP定时执行计划任务的多种方法小结
2011/12/19 PHP
ThinkPHP模板Switch标签用法示例
2014/06/30 PHP
PHP使用SOAP扩展实现WebService的方法
2016/04/01 PHP
php+mysql+ajax实现单表多字段多关键词查询的方法
2017/04/15 PHP
php实现大文件断点续传下载实例代码
2019/10/01 PHP
上传文件返回的json数据会被提示下载问题解决方案
2014/12/03 Javascript
jQuery和AngularJS的区别浅析
2015/01/29 Javascript
自动完成的搜索框javascript实现
2016/02/26 Javascript
JavaScript必知必会(九)function 说起 闭包问题
2016/06/08 Javascript
浅谈JavaScript对象的创建方式
2016/06/13 Javascript
基于Vue如何封装分页组件
2016/12/16 Javascript
Easyui笔记2:实现datagrid多行删除的示例代码
2017/01/14 Javascript
jQuery上传多张图片带进度条样式(DEMO)
2017/03/02 Javascript
快速使用node.js进行web开发详解
2017/04/26 Javascript
Vue2 SSR渲染根据不同页面修改 meta
2017/11/20 Javascript
Vue DevTools调试工具的使用
2017/12/05 Javascript
Vue仿今日头条实例详解
2018/02/06 Javascript
详解解决使用axios发送json后台接收不到的问题
2018/06/27 Javascript
vue组件命名和props命名代码详解
2019/09/01 Javascript
[52:32]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第三场 11.18
2020/11/18 DOTA
Python合并两个字典的常用方法与效率比较
2015/06/17 Python
Python常见字符串操作函数小结【split()、join()、strip()】
2018/02/02 Python
react+django清除浏览器缓存的几种方法小结
2019/07/17 Python
如何在Django配置文件里配置session链接
2019/08/06 Python
pytorch 自定义数据集加载方法
2019/08/18 Python
详解Django-channels 实现WebSocket实例
2019/08/22 Python
Python爬虫 urllib2的使用方法详解
2019/09/23 Python
运动会邀请函范文
2014/02/06 职场文书
员工晚婚的请假条
2014/02/08 职场文书
班主任对学生的评语
2014/04/26 职场文书
认错检讨书
2014/10/02 职场文书
2014年招商引资工作总结
2014/11/22 职场文书
劳动仲裁调解书
2015/05/20 职场文书
2016年情人节问候语
2015/11/11 职场文书
MYSQL中文乱码问题的解决方案
2022/06/14 MySQL
MySql统计函数COUNT的具体使用详解
2022/08/14 MySQL