理解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 相关文章推荐
XHTML-Strict 内允许出现的标签
Dec 11 Javascript
IE和FireFox(FF)中js和css的不同
Apr 13 Javascript
javascript cookie操作类的实现代码小结附使用方法
Jun 02 Javascript
javascript最常用与实用的创建类的代码
Aug 12 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
Jun 13 Javascript
基于js disabled=&quot;false&quot;不起作用的解决办法
Jun 26 Javascript
jQuery调用WebMethod(PageMethod) NET2.0的方法
Apr 15 Javascript
jQuery 选择器(61种)整理总结
Sep 26 Javascript
vuejs如何配置less
Apr 25 Javascript
Vue2.0学习系列之项目上线的方法步骤(图文)
Sep 25 Javascript
一个手写的vue放大镜效果
Aug 09 Javascript
vue中nextTick用法实例
Sep 11 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简单的伪原创程序,配合商城采集用的
2010/10/12 PHP
php备份数据库类分享
2015/04/14 PHP
php封装的mongodb操作类代码
2017/08/06 PHP
Javascript 获取字符串字节数的多种方法
2009/06/02 Javascript
如何设置iframe高度自适应在跨域情况下的可用方法
2013/09/06 Javascript
jQuery中校验时间格式的正则表达式小结
2013/09/22 Javascript
无闪烁更新网页内容JS实现
2013/12/19 Javascript
javascript生成json数据简单示例分享
2014/02/14 Javascript
jquery实现弹出div,始终显示在屏幕正中间的简单实例
2014/03/08 Javascript
完美兼容各大浏览器获取HTTP_REFERER方法总结
2014/06/24 Javascript
浅谈js的setInterval事件
2014/12/05 Javascript
iframe里使用JavaScript控制主页转向的方法
2015/04/03 Javascript
Javascript中常见的逻辑题和解决方法
2016/09/17 Javascript
js中的触发事件对象event.srcElement与event.target详解
2017/03/15 Javascript
bootstrap select插件封装成Vue2.0组件
2017/04/17 Javascript
JavaScript实现图片无缝滚动效果
2017/07/07 Javascript
JavaScript中EventLoop介绍
2018/01/22 Javascript
Node.js 使用jade模板引擎的示例
2018/05/11 Javascript
Vue项目引发的「过滤器」使用教程
2019/03/12 Javascript
Angular脚手架开发的实现步骤
2019/04/09 Javascript
解决Layui 表格自适应高度的问题
2019/11/15 Javascript
Vue实现点击当前行变色
2020/12/14 Vue.js
python中使用OpenCV进行人脸检测的例子
2014/04/18 Python
bat和python批量重命名文件的实现代码
2016/05/19 Python
PyCharm 创建指定版本的 Django(超详图解教程)
2019/06/18 Python
python下PyGame的下载与安装过程及遇到问题
2019/08/04 Python
快速查找Python安装路径方法
2020/02/06 Python
将数据集制作成VOC数据集格式的实例
2020/02/17 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
2020/05/22 Python
详解python的super()的作用和原理
2020/10/29 Python
Python 带星号(* 或 **)的函数参数详解
2021/02/23 Python
英国最大的在线床超市:Bed Star
2019/01/24 全球购物
大学生自我鉴定
2013/12/16 职场文书
企业道德讲堂实施方案
2014/03/19 职场文书
煤矿安全演讲稿
2014/05/09 职场文书
HDFS免重启挂载新磁盘
2022/04/06 Servers