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中的一些定位属性[图解]
Jul 14 Javascript
用JavaScript对JSON进行模式匹配(Part 1-设计)
Jul 17 Javascript
jQuery实现图片信息的浮动显示实例代码
Aug 28 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
Nov 28 Javascript
JS版的date函数(和PHP的date函数一样)
May 12 Javascript
JS获取iframe中longdesc属性的方法
Apr 01 Javascript
JS留言功能的简单实现案例(推荐)
Jun 23 Javascript
ES6新特性之Symbol类型用法分析
Mar 31 Javascript
AngularJS中table表格基本操作示例
Oct 10 Javascript
解决vue+webpack打包路径的问题
Mar 06 Javascript
Jquery实现获取子元素的方法分析
Aug 24 jQuery
原生JavaScript创建不可变对象的方法简单示例
May 07 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防CC攻击实现代码
2011/12/29 PHP
手把手教你打印出PDF(关于fpdf的简单应用)
2013/06/25 PHP
10个超级有用值得收藏的PHP代码片段
2015/01/22 PHP
PHP生成随机密码方法汇总
2015/08/27 PHP
Jquery中删除元素的实现代码
2011/12/29 Javascript
JS实现带有抽屉效果的产品类网站多级导航菜单代码
2015/09/15 Javascript
JavaScript实现弹出模态窗体并接受传值的方法
2016/02/12 Javascript
javascript正则表达式之分组概念与用法实例
2016/06/16 Javascript
基于JS实现导航条之调用网页助手小精灵的方法
2016/06/17 Javascript
jQuery ajaxForm()的应用
2016/10/14 Javascript
NodeJS整合银联网关支付(DEMO)
2016/11/09 NodeJs
bootstrap网格系统使用方法解析
2017/01/13 Javascript
vue列表单项展开收缩功能之this.$refs的详解
2019/05/05 Javascript
在Node.js中将SVG图像转换为PNG,JPEG,TIFF,WEBP和HEIF格式的方法
2019/08/22 Javascript
使用Layui搭建后台管理界面的操作方法
2019/09/20 Javascript
微信小程序接入腾讯云验证码的方法步骤
2020/01/07 Javascript
javascript实现支付宝滑块验证码效果
2020/07/24 Javascript
[42:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS OpTic
2018/03/31 DOTA
python中使用xlrd、xlwt操作excel表格详解
2015/01/29 Python
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
2017/03/20 Python
python入门:这篇文章带你直接学会python
2018/09/14 Python
python打印文件的前几行或最后几行教程
2020/02/13 Python
浅谈keras中的目标函数和优化函数MSE用法
2020/06/10 Python
python import 上级目录的导入
2020/11/03 Python
python 实现socket服务端并发的四种方式
2020/12/14 Python
在python3.9下如何安装scrapy的方法
2021/02/03 Python
html5 冒号分隔符对齐的实现
2019/07/31 HTML / CSS
Myholidays美国:在线旅游网站
2019/08/16 全球购物
俄罗斯领先的移动和数字设备在线商店:Svyaznoy.ru
2020/12/21 全球购物
歌颂祖国演讲稿
2014/05/04 职场文书
营销团队口号
2014/06/06 职场文书
党支部意见范文
2015/06/02 职场文书
新农村建设指导员工作总结
2015/08/13 职场文书
2016年小学植树节活动总结
2016/03/16 职场文书
2019数学教师下学期工作总结
2019/06/27 职场文书
sql注入教程之类型以及提交注入
2021/08/02 MySQL