理解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中的string.format函数代码
Aug 11 Javascript
密码框显示提示文字jquery示例
Aug 29 Javascript
jQuery窗口、文档、网页各种高度的精确理解
Jul 02 Javascript
jQuery中toggleClass()方法用法实例
Jan 05 Javascript
JS获取随机数和时间转换的简单实例
Jul 10 Javascript
让编辑器支持word复制黏贴、截屏的js代码
Oct 17 Javascript
headjs实现网站并行加载但顺序执行JS
Nov 29 Javascript
Angular中使用$watch监听object属性值的变化(详解)
Apr 24 Javascript
详解如何在angular2中获取节点
Nov 23 Javascript
微信小程序背景音乐开发详解
Dec 12 Javascript
微信小程序 (地址选择1)--选取搜索地点并显示效果
Dec 17 Javascript
js 执行上下文和作用域的相关总结
Feb 08 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 Header用于页面跳转要注意的几个问题总结
2008/10/03 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
jQuery select的操作实现代码
2009/05/06 Javascript
百度留言本js 大家可以参考下
2009/10/13 Javascript
Javascript跨域请求的4种解决方式
2013/03/17 Javascript
使用CSS样式position:fixed水平滚动的方法
2014/02/19 Javascript
自己用jQuery写了一个图片的马赛克消失效果
2014/05/04 Javascript
javascript中hasOwnProperty() 方法使用指南
2015/03/09 Javascript
JS与jQuery遍历Table所有单元格内容的方法
2015/12/07 Javascript
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
2016/07/26 NodeJs
JS自定义混合Mixin函数示例
2016/11/26 Javascript
ES6 Promise对象的应用实例分析
2019/06/27 Javascript
深入浅析python中的多进程、多线程、协程
2016/06/22 Python
使用Python将数组的元素导出到变量中(unpacking)
2016/10/27 Python
python利用dir函数查看类中所有成员函数示例代码
2017/09/08 Python
Django admin实现图书管理系统菜鸟级教程完整实例
2017/12/12 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
2017/12/20 Python
利用python对Excel中的特定数据提取并写入新表的方法
2018/06/14 Python
python 对给定可迭代集合统计出现频率,并排序的方法
2018/10/18 Python
对python多线程SSH登录并发脚本详解
2019/02/14 Python
pymysql模块的操作实例
2019/12/17 Python
解析HTML5中的新功能本地存储localStorage
2016/03/01 HTML / CSS
NUK奶瓶美国官网:NUK美国
2016/09/26 全球购物
印度首选时尚目的地:Reliance Trends
2018/01/17 全球购物
美国高品质个性化珠宝销售网站:Jewlr
2018/05/03 全球购物
婚鞋、新娘鞋、礼服鞋、童鞋:Nina Shoes
2019/09/04 全球购物
师范毕业生求职自荐信
2013/09/25 职场文书
英文版餐饮业求职信
2013/10/18 职场文书
车间组长岗位职责
2013/12/20 职场文书
四年级下册教学反思
2014/02/01 职场文书
建筑工程专业大学生求职信
2014/04/23 职场文书
机械设计专业大学生职业生涯规划书范文
2014/09/13 职场文书
承诺保证书格式
2015/02/28 职场文书
社区挂职锻炼个人工作总结
2015/10/23 职场文书
导游词之五台山
2019/10/11 职场文书
Django + Taro 前后端分离项目实现企业微信登录功能
2022/04/07 Python