理解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 相关文章推荐
JS实现打开本地文件或文件夹
Mar 09 Javascript
JavaScript调用堆栈及setTimeout使用方法深入剖析
Feb 16 Javascript
JavaScript验证图片类型(扩展名)的函数分享
May 05 Javascript
JavaScript怎么判断图片是否加载完成以便获取其尺寸
May 08 Javascript
FF(火狐)浏览器无法执行window.close()解决方案
Nov 13 Javascript
firefox浏览器用jquery.uploadify插件上传时报HTTP 302错误
Mar 01 Javascript
BootStrap制作导航条实例代码
May 06 Javascript
微信公众平台开发教程(四) 实例入门:机器人回复(附源码)
Dec 02 Javascript
JS简单获取当前日期和农历日期的方法
Apr 17 Javascript
Bootstrap 3多级下拉菜单实例
Nov 23 Javascript
js实现经典贪吃蛇小游戏
Mar 19 Javascript
js判断鼠标移入移出方向的方法
Jun 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
PHP中uploaded_files函数使用方法详解
2011/03/09 PHP
php实现的ping端口函数实例
2014/11/12 PHP
php有效防止同一用户多次登录
2015/11/19 PHP
Yii针对添加行的增删改查操作示例
2016/10/18 PHP
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
AngularJS入门教程(零):引导程序
2014/12/06 Javascript
Javascript页面跳转常见实现方式汇总
2015/11/28 Javascript
Node.js实用代码段之正确拼接Buffer
2016/03/17 Javascript
JS只能输入正整数的简单实例
2016/10/07 Javascript
详解jQuery插件开发方式
2016/11/22 Javascript
Easyui Tree获取当前选择节点的所有顶级父节点
2017/02/14 Javascript
浅谈vue的几种绑定变量的值 防止其改变的方法
2018/03/01 Javascript
python 域名分析工具实现代码
2009/07/15 Python
sqlalchemy对象转dict的示例
2014/04/22 Python
python多线程方式执行多个bat代码
2016/06/07 Python
python实现点对点聊天程序
2018/07/28 Python
Python动态生成多维数组的方法示例
2018/08/09 Python
Python实战之制作天气查询软件
2019/05/14 Python
在Pycharm中调试Django项目程序的操作方法
2019/07/17 Python
如何使用scrapy中的ItemLoader提取数据
2020/09/30 Python
深入浅析HTML5中的SVG
2015/11/27 HTML / CSS
模具设计与制造专业应届生求职信
2013/10/18 职场文书
厨房工作人员岗位职责
2013/11/15 职场文书
前台文员岗位职责及工作流程
2013/11/19 职场文书
文明餐桌活动方案
2014/02/11 职场文书
原材料检验岗位职责
2014/03/15 职场文书
我读书我快乐演讲稿
2014/05/07 职场文书
公司周年庆典策划方案
2014/05/17 职场文书
金融专业求职信
2014/08/05 职场文书
优秀教师先进个人事迹材料
2014/08/31 职场文书
学习朴航瑛老师爱岗敬业先进事迹思想汇报
2014/09/17 职场文书
2014年计划生育工作总结
2014/11/14 职场文书
六年级作文之预言作文
2019/10/25 职场文书
创业计划书之网络外卖
2019/10/31 职场文书
MySQL复制问题的三个参数分析
2021/04/07 MySQL
Mybatis 一级缓存和二级缓存原理区别
2022/09/23 Java/Android