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 相关文章推荐
在网页中屏蔽快捷键
Sep 06 Javascript
Easy.Ajax 部分源代码 支持文件上传功能, 兼容所有主流浏览器
Feb 24 Javascript
jquery实现图片渐变切换兼容ie6/Chrome/Firefox
Aug 02 Javascript
a标签跳转到指定div,jquery添加和移除class属性的实现方法
Oct 10 Javascript
JS添加或修改控件的样式(Class)实现方法
Oct 15 Javascript
jquery css实现邮箱自动补全
Nov 14 Javascript
详谈angularjs中路由页面强制更新的问题
Apr 24 Javascript
详解Vue.js分发之作用域槽
Jun 13 Javascript
微信小程序显示下拉列表功能【附源码下载】
Dec 12 Javascript
解决koa2 ctx.render is not a function报错问题
Aug 07 Javascript
JavaScript中import用法总结
Jan 20 Javascript
JavaScript中的事件与异常捕获详析
Feb 24 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
重置版战役片段
2020/04/09 魔兽争霸
亲密接触PHP之PHP语法学习笔记1
2006/12/17 PHP
PHP命名空间namespace的定义方法详解
2017/03/29 PHP
PHP面向对象程序设计(OOP)之方法重写(override)操作示例
2018/12/21 PHP
CentOS7编译安装php7.1的教程详解
2019/04/18 PHP
基于Jquery 解决Ajax请求的页面 浏览器后退前进功能,页面刷新功能实效问题
2010/12/11 Javascript
基于jquery的3d效果实现代码
2011/03/23 Javascript
基于JQuery制作可编辑的表格特效
2014/12/23 Javascript
jQuery中:empty选择器用法实例
2014/12/30 Javascript
JS关闭窗口时产生的事件及用法示例
2016/08/20 Javascript
AngularJS中的DOM操作用法分析
2016/11/04 Javascript
基于jQuery实现咖啡订单管理简单应用
2017/02/10 Javascript
Angular.js跨controller实现参数传递的两种方法
2017/02/20 Javascript
JavaScript中 DOM操作方法小结
2017/04/25 Javascript
vue+vuex+axios实现登录、注册页权限拦截
2018/03/09 Javascript
JavaScript实现创建自定义对象的常用方式总结
2018/07/09 Javascript
python uuid模块使用实例
2015/04/08 Python
Python实现Smtplib发送带有各种附件的邮件实例
2017/06/05 Python
Python排序搜索基本算法之堆排序实例详解
2017/12/08 Python
Pandas 数据处理,数据清洗详解
2018/07/10 Python
python添加模块搜索路径和包的导入方法
2019/01/19 Python
深入浅析python 协程与go协程的区别
2019/05/09 Python
对Python 中矩阵或者数组相减的法则详解
2019/08/26 Python
python 实现二维列表转置
2019/12/02 Python
Python基于百度AI实现OCR文字识别
2020/04/02 Python
vue+django实现下载文件的示例
2021/03/24 Vue.js
科技节口号
2014/06/19 职场文书
语文教育专业求职信
2014/06/28 职场文书
教育专业毕业生推荐信
2014/07/10 职场文书
教师批评与自我批评发言稿
2014/10/15 职场文书
务虚会发言材料
2014/12/25 职场文书
医院见习总结
2015/06/24 职场文书
新娘婚礼致辞
2015/07/27 职场文书
如何用JS实现网页瀑布流布局
2021/04/24 Javascript
JavaScript 与 TypeScript之间的联系
2021/11/27 Javascript
Android Studio实现简易进制转换计算器
2022/05/20 Java/Android