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 类似flash效果的立体图片浏览器
Feb 08 Javascript
js实现div闪烁原理及实现代码
Jun 24 Javascript
《JavaScript DOM 编程艺术》读书笔记之DOM基础
Jan 09 Javascript
深入学习jQuery Validate表单验证(二)
Jan 18 Javascript
Vue.js实现拖放效果的实例
Sep 30 Javascript
Bootstrap 表单验证formValidation 实现远程验证功能
May 17 Javascript
深入剖析Node.js cluster模块
May 23 Javascript
JavaScript实现构造json数组的方法分析
Aug 17 Javascript
对layer弹出框中icon数字参数的说明介绍
Sep 04 Javascript
JavaScript工具库MyTools详解
Jan 01 Javascript
JS如何定义用字符串拼接的变量
Jul 11 Javascript
jQuery冲突问题解决方法
Jan 19 jQuery
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
特详细的PHPMYADMIN简明安装教程
2008/08/01 PHP
PHP Swoole异步Redis客户端实现方法示例
2019/10/24 PHP
url地址自动加#号问题说明
2010/08/21 Javascript
jquery构造器的实现代码小结
2011/05/16 Javascript
javaScript矢量图表库-gRaphael几行代码实现精美的条形图/饼图/点图/曲线图
2013/01/09 Javascript
jQuery function的正确书写方法
2013/08/02 Javascript
一个JavaScript操作元素定位元素的实例
2014/10/29 Javascript
bootstrap table 服务器端分页例子分享
2015/02/10 Javascript
JAVASCRIPT代码编写俄罗斯方块网页版
2015/11/26 Javascript
AngularJS手动表单验证
2016/02/01 Javascript
JS使用面向对象技术实现的tab选项卡效果示例
2017/02/28 Javascript
Express的HTTP重定向到HTTPS的方法
2018/06/06 Javascript
解决vue this.$forceUpdate() 处理页面刷新问题(v-for循环值刷新等)
2018/07/26 Javascript
Bootstrap4 gulp 配置详解
2019/01/06 Javascript
vue input实现点击按钮文字增删功能示例
2019/01/29 Javascript
使用ESLint禁止项目导入特定模块的方法步骤
2019/03/04 Javascript
细说Vue组件的服务器端渲染的过程
2019/05/30 Javascript
Typescript的三种运行方式(小结)
2019/09/18 Javascript
Python 操作文件的基本方法总结
2017/08/10 Python
将Python字符串生成PDF的实例代码详解
2019/05/17 Python
使用Python实现批量ping操作方法
2020/05/06 Python
浅谈pycharm导入pandas包遇到的问题及解决
2020/06/01 Python
PyQT5速成教程之Qt Designer介绍与入门
2020/11/02 Python
HTML5 canvas基本绘图之填充样式实现
2016/06/27 HTML / CSS
阿迪达斯西班牙官方网站:adidas西班牙
2016/07/21 全球购物
简述索引存取方法的作用和建立索引的原则
2013/03/26 面试题
linux面试题参考答案(7)
2014/07/24 面试题
平面设计自荐信
2013/10/07 职场文书
企业为何需要商业计划书
2013/12/26 职场文书
幼儿教师演讲稿
2014/05/06 职场文书
践行党的群众路线心得体会
2014/11/05 职场文书
六年级学生期末评语
2014/12/26 职场文书
2015年防汛工作总结
2015/05/15 职场文书
大学生就业指导课心得体会
2016/01/15 职场文书
Python中的xlrd模块使用整理
2021/06/15 Python
Java面试题冲刺第十九天--数据库(4)
2021/08/07 Java/Android