理解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 相关文章推荐
JQuery Tips(2) 关于$()包装集你不知道的
Dec 14 Javascript
jQuery的三种$()
Dec 30 Javascript
jquery常用技巧及常用方法列表集合
Apr 06 Javascript
判断文档离浏览器顶部的距离的方法
Jan 08 Javascript
jQuery操作select下拉框的text值和value值的方法
May 31 Javascript
JavaScript随机生成信用卡卡号的方法
Apr 07 Javascript
每天一篇javascript学习小结(String对象)
Nov 18 Javascript
Node.js学习入门
Jan 03 Javascript
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
Jan 18 jQuery
TypeScript中的方法重载详解
Apr 12 Javascript
js实现移动端tab切换时下划线滑动效果
Sep 08 Javascript
vue中是怎样监听数组变化的
Oct 24 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
世界收音机发展史
2021/03/01 无线电
一些常用的php函数
2006/12/06 PHP
解析zend studio中直接导入svn中的项目的方法步骤
2013/06/21 PHP
php递归使用示例(php递归函数)
2014/02/14 PHP
利用PHP命令行模式采集股票趋势信息
2016/08/09 PHP
总结PHP中DateTime的常用方法
2016/08/11 PHP
php实现微信支付之企业付款
2018/05/30 PHP
一款JavaScript压缩工具:X2JSCompactor
2007/06/13 Javascript
推荐17个优美新鲜的jQuery的工具提示插件
2012/09/14 Javascript
js动态设置鼠标事件示例代码
2013/10/30 Javascript
js实现九宫格图片半透明渐显特效的方法
2015/02/16 Javascript
jquery submit()不能提交表单的解决方法
2017/04/24 jQuery
[js高手之路]原型式继承与寄生式继承详解
2017/08/28 Javascript
BootStrap模态框和select2合用时input无法获取焦点的解决方法
2017/09/01 Javascript
简述JS控制台的使用
2018/07/15 Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
2018/08/20 Javascript
关于React动态加载路由处理的相关问题
2019/01/07 Javascript
vue router 用户登陆功能的实例代码
2019/04/24 Javascript
[01:00:26]Ti4主赛事胜者组第一天 EG vs NEWBEE 1
2014/07/19 DOTA
python语言中with as的用法使用详解
2018/02/23 Python
django请求返回不同的类型图片json,xml,html的实例
2018/05/22 Python
python与字符编码问题
2019/05/24 Python
pytorch 准备、训练和测试自己的图片数据的方法
2020/01/10 Python
详解python内置常用高阶函数(列出了5个常用的)
2020/02/21 Python
新手入门学习python Numpy基础操作
2020/03/02 Python
如何快速理解python的垃圾回收机制
2020/09/01 Python
css 省略号 css3让多余的字符串消失并附加省略号的实现代码
2013/02/07 HTML / CSS
HTML5 Canvas+JS控制电脑或手机上的摄像头实例
2014/05/03 HTML / CSS
美国山地自行车、露营、户外装备和服装购物网站:Aventuron
2018/05/05 全球购物
Otticanet澳大利亚:最顶尖的世界名牌眼镜, 能得到打折季的价格
2018/08/23 全球购物
世界汽车零件:World Car Parts
2019/09/04 全球购物
销售演讲稿范文
2014/01/08 职场文书
2014年行政部工作总结
2014/11/19 职场文书
如何理解Vue简单状态管理之store模式
2021/05/15 Vue.js
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
2021/06/30 SQL Server
解决springboot druid数据库连接失败后一直重连的方法
2022/04/19 Java/Android