理解jquery事件冒泡


Posted in Javascript onJanuary 03, 2016

一、什么是jquery事件冒泡
在很多教材或者手册都可能会涉及到事件冒泡的概念,老手来说这当然是最基本的概念,但往往对于初学者可能比较陌生或者说从来没有听说过。下面就结合代码实例来简单介绍一下什么是事件冒泡。
代码实例如下:

<html>
<head>
<meta charset=" gb2312">
<title>事件冒泡</title>
<script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script>
<script type="text/javascript">
$(document).ready(function(){
 $("#second").click(function(){
  alert("我是second");    
 })
 $("#first").click(function(){
  alert("我是first");    
 })
})
</script>
</head>
<body>
<p id="first"><a id="second" href="http://www.baidu.com">点击查看效果</a></p>
</body>
</html>

在以上代码中,我们可能只想点击锚点后弹出“我是third”,但是令人奇怪的事情却是所有父元素定义的click事件都会被触发。这就是一个典型的事件冒泡效果。所谓的冒泡事件就是,如果在某一个对象上触发某一类事件(如上例的click事件),那么此事件会向对象的父级对象传播,并触发父对象上定义的同类事件。事件传播的方向是从最底层到最顶层,类似于水泡从水底浮上来一般。
二、javascript如何阻止事件冒泡
冒泡事件能够带来便利,有时候也会带来麻烦,下面就简单介绍一下如何阻止事件冒泡。
代码实例如下:

<!DOCTYPE html> 
<html> 
<head> 
<meta charset=" utf-8"> 
<head>
<title>事件冒泡</title>
<style type="text/css">
#grandfather{
 border:1px solid #0066FF;
 cellpadding:0px;
 cellspacing:0px;
}
#grandfather td{
 border: 1px solid #0066FF;
}
</style>
<script type="text/javascript">
function trclick(){
 alert("父亲的onclick事件触发");
}
function tableclick(){
 alert("祖父的onclick事件触发");
}
window.onload=function(){
 var grandfather=document.getElementById("grandfather");
 var father=document.getElementById("father");
 var noStop=document.getElementById("noStop");
 var haveStop=document.getElementById("haveStop");
 
 grandfather.onclick=tableclick;
 father.onclick=trclick;
 
 noStop.onclick=function(){
 alert("没有阻止冒泡的子元素");
 }
 haveStop.onclick=function(evt){
 alert("阻止冒泡的子元素");
 if(window.event){
 event.cancelBubble=true;
 }
 else if(evt){
 evt.stopPropagation();
 }
 }
}
</script>
</head>
<body>
<table width="204" id="grandfather">
 <tr >
 <td width="96"></td>
 <td width="96"></td>
 </tr>
 <tr id="father">
 <td id="noStop">没有阻止事件冒泡</td>
 <td id="haveStop">阻止了事件冒泡</td>
 </tr>
 <tr>
 <td> </td>
 <td> </td>
 </tr>
</table>
</body>
</html>

代码注释:
1.if(window.event)这个用来兼容IE8和IE8一下浏览器。
2. evt.stopPropagation()这个是标准浏览器。

以上代码中,一个单元格阻止了事件冒泡,一个没有阻止事件冒泡,希望对大家的学习有所帮助。

Javascript 相关文章推荐
通过修改referer下载文件的方法
May 11 Javascript
javascript中JSON.parse()与eval()解析json的区别
May 19 Javascript
BootStrap中的table实现数据填充与分页应用小结
May 26 Javascript
基于bootstrap风格的弹框插件
Dec 28 Javascript
js 获取图像缩放后的实际宽高,位置等信息
Mar 07 Javascript
VueJs 搭建Axios接口请求工具
Nov 20 Javascript
关于HTML5的data-*自定义属性的总结
May 05 Javascript
微信小程序生成分享海报方法(附带二维码生成)
Mar 29 Javascript
微信小程序云开发之新手环境配置
May 16 Javascript
vue+webpack dev本地调试全局样式引用失效的解决方案
Nov 12 Javascript
js数组中去除重复值的几种方法
Aug 03 Javascript
JS实现手风琴特效
Nov 08 Javascript
实例讲解避免javascript冲突的方法
Jan 03 #Javascript
详解js中class的多种函数封装方法
Jan 03 #Javascript
js中利用tagname和id获取元素的方法
Jan 03 #Javascript
信息页文内画中画广告js实现代码(文中加载广告方式)
Jan 03 #Javascript
基于javascript实现简单计算器功能
Jan 03 #Javascript
详解Javascript事件驱动编程
Jan 03 #Javascript
基于javascript实现仿百度输入框自动匹配功能
Jan 03 #Javascript
You might like
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
2011/04/18 PHP
Laravel5.0+框架邮件发送功能实现方法图文与实例详解
2019/04/23 PHP
jQuery Lightbox 图片展示插件使用说明
2010/04/25 Javascript
基于jQuery的图片左右无缝滚动插件
2012/05/23 Javascript
document.write()及其输出内容的样式、位置控制
2013/08/12 Javascript
javascript通过className来获取元素的简单示例代码
2014/01/10 Javascript
jQuery文件上传插件Uploadify使用指南
2014/06/05 Javascript
详解基于Bootstrap扁平化的后台框架Ace
2015/11/27 Javascript
javascript图片预加载完整实例
2015/12/10 Javascript
JavaScript时间操作之年月日星期级联操作
2016/01/15 Javascript
jquery checkbox无法用attr()二次勾选问题的解决方法
2016/07/22 Javascript
bootstrap表格分页实例讲解
2016/12/30 Javascript
用ES6写全屏滚动插件的示例代码
2018/05/02 Javascript
详解使用jQuery.i18n.properties实现js国际化
2018/05/04 jQuery
微信小程序自定义导航教程(兼容各种手机)
2018/12/12 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】
2018/12/13 Javascript
Vue修改项目启动端口号方法
2019/11/07 Javascript
深入理解 TypeScript Reflect Metadata
2019/12/12 Javascript
jQuery 动画与停止动画效果实例详解
2020/05/19 jQuery
[46:40]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[34:41]夜魇凡尔赛茶话会 第二期02:你画我猜
2021/03/11 DOTA
在Python中使用mechanize模块模拟浏览器功能
2015/05/05 Python
Python中格式化format()方法详解
2017/04/01 Python
python找出完数的方法
2018/11/12 Python
Pandas实现DataFrame按行求百分数(比例数)
2019/12/27 Python
Tensorflow读取并输出已保存模型的权重数值方式
2020/01/04 Python
Python下利用BeautifulSoup解析HTML的实现
2020/01/17 Python
如何基于python实现不邻接植花
2020/05/01 Python
Python self用法详解
2020/11/28 Python
24个canvas基础知识小结
2014/12/17 HTML / CSS
纽约家具、家居装饰和地毯店:ABC Carpet & Home
2017/06/21 全球购物
End Clothing美国站:英国男士潮牌商城
2018/04/20 全球购物
美国户外服装和装备购物网站:Outland USA
2020/03/22 全球购物
中学生学雷锋演讲稿
2014/04/26 职场文书
2014年节能工作总结
2014/12/18 职场文书
企业反腐倡廉心得体会
2015/08/15 职场文书