jQuery中on绑定事件后引发的事件冒泡问题如何解决


Posted in Javascript onMay 25, 2016

用on绑定时,我把子元素的 绑定到 document,而把父元素绑定到上级元素,导致 return false 阻止冒泡无效。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>事件冒泡</title> 
<script src="jquery-1.7.1.js" type="text/javascript"></script> 
<script language="javascript" type="text/javascript"> 
$(function () { 
$(document).on("click","#p1",function(e){ 
console.log(e.target.tagName); 
console.log("p1被点击了"); 
//e.stopPropagation(); //终止冒泡的方法 
return false; 
}) 
$("#aa").on("click","#td1",function(e){ 
console.log(e.target.tagName); 
console.log("td1被点击了"); 
}) 
$("#aa").on("click","#tr1",function(e){ 
console.log(e.target.tagName); 
console.log("tr1被点击了"); 
}) 
$("#aa").on("click","#table1",function(e){ 
console.log(e.target.tagName); 
console.log("table1被点击了"); 
}) 
}); 
</script> 
</head> 
<body id="aa"> 
<table onclick="alert('这是table')"> 
<tr onclick="alert('这是tr')"> 
<td onclick="alert('这是td')"> 
<p onclick="alert('这是p')">段落</p> 
</td> 
</tr> 
</table> 
<table id="table1"> 
<tr id="tr1"> 
<td id="td1"> 
<p id="p1">你好</p> 
</td> 
</tr> 
</table> 
</body> 
</html>

on方法 将click等事件绑定在document对象上,页面上任何元素发生的click事件都冒泡到document对象上得到处理。

增加了绑定效率。当事件冒泡到document对象时,检测事件的target,如果与传入的选择符(这里是button)匹配,就触发事件,否则不触发。

修改为统一绑定对象后即解决,初步认为是因为 on方法的绑定机制问题。

所以return false 无效。子元素和父元素修改为相同 绑定元素后,问题解决

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>事件冒泡</title> 
<script src="jquery-1.7.1.js" type="text/javascript"></script> 
<script language="javascript" type="text/javascript"> 
$(function () { 
$("#aa").on("click","#p1",function(e){ 
console.log(e.target.tagName); 
console.log("p1被点击了"); 
//e.stopPropagation(); //终止冒泡的方法 
return false; 
}) 
$("#aa").on("click","#td1",function(e){ 
console.log(e.target.tagName); 
console.log("td1被点击了"); 
}) 
$("#aa").on("click","#tr1",function(e){ 
console.log(e.target.tagName); 
console.log("tr1被点击了"); 
}) 
$("#aa").on("click","#table1",function(e){ 
console.log(e.target.tagName); 
console.log("table1被点击了"); 
}) 
}); 
</script> 
</head> 
<body id="aa"> 
<table onclick="alert('这是table')"> 
<tr onclick="alert('这是tr')"> 
<td onclick="alert('这是td')"> 
<p onclick="alert('这是p')">段落</p> 
</td> 
</tr> 
</table> 
<table id="table1"> 
<tr id="tr1"> 
<td id="td1"> 
<p id="p1">你好</p> 
</td> 
</tr> 
</table> 
</body> 
</html>

以上所述是小编给大家介绍的jQuery中on绑定事件后引发的事件冒泡问题及解决办法,希望能够帮助到大家!

Javascript 相关文章推荐
javaScript复制功能调用实现方案
Dec 13 Javascript
HTTP 304错误的详细讲解
Nov 13 Javascript
探讨javascript是不是面向对象的语言
Nov 21 Javascript
js统计页面的来访次数实现代码
May 09 Javascript
jQuery实现360°全景拖动展示
Mar 18 Javascript
jQuery实现图片向左向右切换效果的简单实例
May 18 Javascript
微信小程序 教程之事件
Oct 18 Javascript
在vue项目中使用sass的配置方法
Mar 20 Javascript
jquery+php后台实现省市区联动功能示例
May 23 jQuery
echarts多条折线图动态分层的实现方法
May 24 Javascript
layui异步加载table表中某一列数据的例子
Sep 16 Javascript
vue实现评价星星功能
Jun 30 Javascript
jQuery each函数源码分析
May 25 #Javascript
jQuery中的each()详细介绍(推荐)
May 25 #Javascript
jQuery中each()、find()和filter()等节点操作方法详解(推荐)
May 25 #Javascript
jquery easyui datagrid实现增加,修改,删除方法总结
May 25 #Javascript
15个值得开发人员关注的jQuery开发技巧和心得总结【经典收藏】
May 25 #Javascript
HTML5+jQuery插件Quicksand实现超酷的星际争霸2兵种分类展示效果(附demo源码下载)
May 25 #Javascript
js的form表单提交url传参数(包含+等特殊字符)的两种解决方法
May 25 #Javascript
You might like
PHP与javascript对多项选择的处理
2006/10/09 PHP
如何把PHP转成EXE文件
2006/10/09 PHP
php部分常见问题总结
2008/03/27 PHP
PHP7.0版本备注
2015/07/23 PHP
Yii2 rbac权限控制之rule教程详解
2016/06/23 PHP
Javascript实例教程(19) 使用HoTMetal(6)
2006/12/23 Javascript
JSON无限折叠菜单编写实例
2013/12/16 Javascript
javascript调试过程中找不到哪里出错的可能原因
2013/12/16 Javascript
jQuery实现点击图片翻页展示效果的方法
2015/02/16 Javascript
js实现支持手机滑动切换的轮播图片效果实例
2015/04/29 Javascript
js实现非常简单的焦点图切换特效实例
2015/05/07 Javascript
分享五个有用的jquery小技巧
2015/10/08 Javascript
jquery通过name属性取值的简单实现方法
2016/06/20 Javascript
JS实现类似51job上的地区选择效果示例
2016/11/17 Javascript
JS中检测数据类型的几种方式及优缺点小结
2016/12/12 Javascript
node.js 和HTML5开发本地桌面应用程序
2016/12/13 Javascript
微信小程序 滚动到某个位置添加class效果实现代码
2017/04/19 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
2017/04/20 jQuery
vue2 前后端分离项目ajax跨域session问题解决方法
2017/04/27 Javascript
快速处理vue渲染前的显示问题
2018/03/05 Javascript
NodeJS使用Range请求实现下载功能的方法示例
2018/10/12 NodeJs
JavaScript cookie原理及使用实例
2020/05/08 Javascript
[03:00]2018完美盛典_最佳英雄奖
2018/12/17 DOTA
[57:12]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第一场 10.31
2020/11/02 DOTA
python中使用smtplib和email模块发送邮件实例
2014/04/22 Python
Win7下搭建python开发环境图文教程(安装Python、pip、解释器)
2016/05/17 Python
详解Python实现多进程异步事件驱动引擎
2017/08/25 Python
numpy.transpose对三维数组的转置方法
2018/04/17 Python
python 用lambda函数替换for循环的方法
2018/06/09 Python
HTML5手机端弹出遮罩菜单特效代码
2016/01/27 HTML / CSS
JavaScript+Canvas实现自定义画板的示例代码
2019/05/13 HTML / CSS
Under Armour安德玛中国官网:美国高端运动科技品牌
2018/03/09 全球购物
静态变量和实例变量的区别
2015/07/07 面试题
电子专业毕业生自荐信
2014/05/25 职场文书
员工工作表扬信
2015/05/05 职场文书
Win11 Build 25179预览版发布(附更新内容+ISO官方镜像下载)
2022/08/14 数码科技