理解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 相关文章推荐
动态加载图片路径 保持JavaScript控件的相对独立性
Sep 06 Javascript
jquery监听div内容的变化具体实现思路
Nov 04 Javascript
原生JS可拖动弹窗效果实例代码
Nov 09 Javascript
选择复选框按钮置灰否则按钮可用
May 22 Javascript
jquery 页眉单行信息滚动显示实现思路及代码
Jun 26 Javascript
JS处理json日期格式化问题
Oct 01 Javascript
javascript 中事件冒泡和事件捕获机制的详解
Sep 01 Javascript
javascript代码优化的8点总结
Jan 29 Javascript
Node.js搭建WEB服务器的示例代码
Aug 15 Javascript
微信小程序学习笔记之登录API与获取用户信息操作图文详解
Mar 29 Javascript
webpack的pitching loader详解
Sep 23 Javascript
vue实现拖拽交换位置
Apr 07 Vue.js
实例讲解避免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
PHP中PDO的错误处理
2011/09/04 PHP
php数组(array)输出的三种形式详解
2013/06/05 PHP
使用PHP接收POST数据,解析json数据
2013/06/28 PHP
php实现按指定大小等比缩放生成上传图片缩略图的方法
2014/12/15 PHP
PHP使用PDO操作数据库的乱码问题解决方法
2016/04/08 PHP
提交表单后 PHP获取提交内容的实现方法
2016/05/25 PHP
JavaScript 申明函数的三种方法 每个函数就是一个对象(一)
2009/12/04 Javascript
JavaScript 学习笔记(七)字符串的连接
2009/12/31 Javascript
利用js制作html table分页示例(js实现分页)
2014/04/25 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
2015/08/07 Javascript
vue中element-ui表格缩略图悬浮放大功能的实例代码
2018/06/26 Javascript
Vue不能检测到Object/Array更新的情况的解决
2018/06/26 Javascript
React中嵌套组件与被嵌套组件的通信过程
2018/07/11 Javascript
详解Vue.js和layui日期控件冲突问题解决办法
2019/07/25 Javascript
JavaScript 继承 封装 多态实现及原理详解
2019/07/29 Javascript
微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能
2019/12/06 Javascript
jquery实现轮播图特效
2020/04/12 jQuery
[01:53]DOTA2超级联赛专访Zhou 五年职业青春成长
2013/05/29 DOTA
[03:17]DOTA2-DPC中国联赛1月29日Recap集锦
2021/03/11 DOTA
python下如何查询CS反恐精英的服务器信息
2017/01/17 Python
Python实现的简单dns查询功能示例
2017/05/24 Python
django ManyToManyField多对多关系的实例详解
2019/08/09 Python
Python使用lambda抛出异常实现方法解析
2020/08/20 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
2020/11/06 Python
iframe在移动端的缩放的示例代码
2018/10/12 HTML / CSS
伦敦一家西班牙童装精品店:La Coqueta
2018/02/02 全球购物
工程师岗位职责规定
2014/02/26 职场文书
弘扬雷锋精神活动演讲稿
2014/03/04 职场文书
学年个人总结范文
2015/03/05 职场文书
2015年父亲节寄语
2015/03/23 职场文书
2015年学校政教处工作总结
2015/05/26 职场文书
关于军训的感想
2015/08/07 职场文书
情况说明书怎么写
2015/10/08 职场文书
某学校的2019年度工作报告范本
2019/10/11 职场文书
苹果电脑mac os中货币符号快捷输入
2022/02/17 杂记
win sever 2022如何占用操作主机角色
2022/06/25 Servers