理解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与其它库冲突的解决方法
Jun 25 Javascript
jquery中的on方法使用介绍
Dec 29 Javascript
JS实现的文字与图片定时切换效果代码
Oct 06 Javascript
jQuery实现简单倒计时功能的方法
Jul 04 Javascript
JS中script标签defer和async属性的区别详解
Aug 12 Javascript
Bootstrap3 多选和单选框(checkbox)
Dec 29 Javascript
理解javascript中的Function.prototype.bind的方法
Feb 03 Javascript
Angular4如何自定义首屏的加载动画详解
Jul 26 Javascript
详解Vue中使用Axios拦截器
Apr 22 Javascript
ElementUI多个子组件表单的校验管理实现
Nov 07 Javascript
vue的三种图片引入方式代码实例
Nov 19 Javascript
微信小程序返回上一页传参并刷新过程解析
Dec 13 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文件服务实现虚拟挂载其他目录示例
2014/04/17 PHP
Laravel中批量赋值Mass-Assignment的真正含义详解
2017/09/29 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
2020/11/10 PHP
一些主流JS框架中DOMReady事件的实现小结
2011/02/12 Javascript
ToolTips JQEURY插件之简洁小提示框效果
2011/11/19 Javascript
自编jQuery插件实现模拟alert和confirm
2014/09/01 Javascript
Flexigrid在IE下不显示数据的有效处理方法
2014/09/04 Javascript
JavaScript基本的输出和嵌入式写法教程
2015/10/20 Javascript
js基础知识(公有方法、私有方法、特权方法)
2015/11/06 Javascript
javascript中的作用域和闭包详解
2016/01/13 Javascript
详解Node.Js如何处理post数据
2016/09/19 Javascript
JavaScript Base64 作为文件上传的实例代码解析
2017/02/14 Javascript
javascript内存分配原理实例分析
2017/04/10 Javascript
web前端vue实现插值文本和输出原始html
2018/01/19 Javascript
Node.js+ELK日志规范的实现
2019/05/23 Javascript
[03:49]辉夜杯现场龙骑士COSER秀情商“我喜欢芬队!”
2015/12/27 DOTA
[00:59]PWL开团时刻DAY7——我在赶
2020/11/06 DOTA
浅谈python中的占位符
2017/11/09 Python
python使用mysql的两种使用方式
2018/03/07 Python
PyQT实现菜单中的复制,全选和清空的功能的方法
2019/06/17 Python
Python 2种方法求某个范围内的所有素数(质数)
2020/01/31 Python
一款超酷的js+css3实现的3D标签云特效兼容ie7/8/9
2013/11/18 HTML / CSS
CSS3实现背景透明文字不透明的示例代码
2018/06/25 HTML / CSS
HTML5本地存储localStorage、sessionStorage基本用法、遍历操作、异常处理等
2014/05/08 HTML / CSS
HTML5 新标签全部总汇(推荐)
2016/06/13 HTML / CSS
应届大学生自荐信格式
2013/09/21 职场文书
护理毕业生自我鉴定
2014/02/11 职场文书
股东协议书范本
2014/04/14 职场文书
保护动物倡议书
2014/04/15 职场文书
民主生活会整改措施(党员)
2014/09/18 职场文书
校长四风对照检查材料
2014/09/27 职场文书
2015年度高中教师工作总结
2015/05/26 职场文书
三国演义读书笔记
2015/06/25 职场文书
高中班长竞选稿
2015/11/20 职场文书
劳动合同变更协议书范本
2019/04/18 职场文书
python套接字socket通信
2022/04/01 Python