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 相关文章推荐
CSS和JS标签style属性对照表(方便js开发的朋友)
Nov 11 Javascript
将HTMLCollection/NodeList/伪数组转换成数组的实现方法
Jun 20 Javascript
javascript中with()方法的语法格式及使用
Aug 04 Javascript
JS+CSS实现分类动态选择及移动功能效果代码
Oct 19 Javascript
JavaScript重定向URL参数的两种方法小结
Oct 19 Javascript
Vue 2.0在IE11中打开项目页面空白的问题解决
Jul 16 Javascript
AJAX在JQuery中的应用详解
Jan 30 jQuery
微信小程序自定义单项选择器样式
Jul 25 Javascript
Layui数据表格 前后端json数据接收的方法
Sep 19 Javascript
Angular8引入百度Echarts进行图表分析的实现代码
Nov 27 Javascript
京东优选小程序的实现代码示例
Feb 25 Javascript
利用promise及参数解构封装ajax请求的方法
Mar 24 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
thinkPHP简单遍历数组方法分析
2016/05/16 PHP
PHP获取文件扩展名的常用方法小结【五种方式】
2018/04/27 PHP
PHP基于cookie实现统计在线人数功能示例
2019/01/16 PHP
JavaScript调用Activex控件的事件的实现方法
2010/04/11 Javascript
{}与function(){}选用空对象{}来存放keyValue
2012/05/23 Javascript
网页打开自动最大化的js代码
2012/08/22 Javascript
2012年开发人员的16款新鲜的jquery插件体验分享
2012/12/28 Javascript
javaScript函数中执行C#代码中的函数方法总结
2013/08/07 Javascript
关于js数组去重的问题小结
2014/01/24 Javascript
jQueryMobile之Helloworld与页面切换的方法
2015/02/04 Javascript
jQuery设置指定网页元素宽度和高度的方法
2015/03/25 Javascript
JS与HTML结合使用marquee标签实现无缝滚动效果代码
2016/07/05 Javascript
js date 格式化
2017/02/15 Javascript
js实现颜色阶梯渐变效果(Gradient算法)
2017/03/21 Javascript
nodejs使用express创建一个简单web应用
2017/03/31 NodeJs
angular bootstrap timepicker TypeError提示怎么办
2017/06/13 Javascript
详解windows下vue-cli及webpack 构建网站(三)使用组件
2017/06/17 Javascript
利用ECharts.js画K线图的方法示例
2018/01/10 Javascript
Python中变量交换的例子
2014/08/25 Python
python中numpy基础学习及进行数组和矢量计算
2017/02/12 Python
Python学习之Django的管理界面代码示例
2018/02/10 Python
python3实现域名查询和whois查询功能
2018/06/21 Python
python 实现创建文件夹和创建日志文件的方法
2019/07/07 Python
window7下的python2.7版本和python3.5版本的opencv-python安装过程
2019/10/24 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
2019/10/30 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
2020/02/03 Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
2020/02/07 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
2020/03/10 Python
英国高档百货连锁店:John Lewis
2017/11/20 全球购物
境外导游求职信
2014/02/27 职场文书
村委会贫困证明范本
2014/09/17 职场文书
入党积极分子自我批评思想汇报
2014/10/10 职场文书
幼儿园2016年圣诞活动总结
2016/03/31 职场文书
pandas 实现将NaN转换为None
2021/05/14 Python
MySQL去除重叠时间求时间差和的实现
2021/08/23 MySQL
mysql 获取时间方式
2022/03/20 MySQL