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的$.event.fix函数统一浏览器event事件处理
Dec 21 Javascript
javascript 弹出层组件(升级版)
May 12 Javascript
javascript 随机展示头像实现代码
Dec 06 Javascript
JS两种定义方式的区别、内部原理
Nov 21 Javascript
完美兼容各大浏览器的jQuery仿新浪图文淡入淡出间歇滚动特效
Nov 12 Javascript
require.js的用法详解
Oct 20 Javascript
简单总结JavaScript中的String字符串类型
May 26 Javascript
详解照片瀑布流效果(js,jquery分别实现与知识点总结)
Jan 01 Javascript
利用jQuery实现一个简单的表格上下翻页效果
Mar 14 Javascript
JavaScript-定时器0~9抽奖系统详解(代码)
Aug 16 Javascript
jQuery中getJSON跨域原理的深入讲解
Sep 02 jQuery
javascript实现用户必须勾选协议实例讲解
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
PHP简单系统数据添加以及数据删除模块源文件下载
2008/06/07 PHP
php实现加减法验证码代码
2014/02/14 PHP
CodeIgniter安全相关设置汇总
2014/07/03 PHP
ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法
2014/10/29 PHP
php防止恶意刷新与刷票的方法
2014/11/21 PHP
thinkphp模板输出技巧汇总
2014/11/24 PHP
简单了解PHP编程中数组的指针的使用
2015/11/30 PHP
Apache PHP MySql安装配置图文教程
2016/08/27 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
PHP 获取客户端 IP 地址的方法实例代码
2018/11/11 PHP
轻松学习jQuery插件EasyUI EasyUI表单验证
2015/12/01 Javascript
JavaScript匿名函数之模仿块级作用域
2015/12/12 Javascript
jQuery使用unlock.js插件实现滑动解锁
2017/04/04 jQuery
JavaScript基础之this详解
2017/06/04 Javascript
解决vue 格式化银行卡(信用卡)每4位一个符号隔断的问题
2018/09/14 Javascript
微信小程序使用npm支持踩坑
2018/11/07 Javascript
JS字符串常用操作方法实例小结
2019/06/24 Javascript
Python实现GUI学生信息管理系统
2020/04/05 Python
http请求 request失败自动重新尝试代码示例
2018/01/25 Python
用Python一键搭建Http服务器的方法
2018/06/01 Python
python实现内存监控系统
2021/03/07 Python
python中将\\uxxxx转换为Unicode字符串的方法
2018/09/06 Python
python3使用matplotlib绘制条形图
2020/03/25 Python
python爬虫 正则表达式解析
2019/09/28 Python
pyftplib中文乱码问题解决方案
2020/01/11 Python
Window10上Tensorflow的安装(CPU和GPU版本)
2020/12/15 Python
钉钉企业内部H5微应用开发详解
2020/05/12 HTML / CSS
泰国办公用品购物网站:OfficeMate
2018/02/04 全球购物
美国购买肉、鸭、家禽、鹅肝和熟食网站:D’Artagnan
2018/11/13 全球购物
党委书记岗位职责
2013/11/24 职场文书
英语商务邀请函范文
2014/01/16 职场文书
普通党员个人剖析材料
2014/10/08 职场文书
道歉信怎么写
2015/05/12 职场文书
Python爬取某拍短视频
2021/06/11 Python
详解Java实现数据结构之并查集
2021/06/23 Java/Android
Oracle中DBLink的详细介绍
2022/04/29 Oracle