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 相关文章推荐
通过pjax实现无刷新翻页(兼容新版jquery)
Jan 31 Javascript
js之ActiveX控件使用说明 new ActiveXObject()
Mar 03 Javascript
理解javascript中DOM事件
Dec 25 Javascript
JavaScript输入框字数实时统计更新
Jun 17 Javascript
JavaScript闭包_动力节点Java学院整理
Jun 27 Javascript
vue.js开发实现全局调用的MessageBox组件实例代码
Nov 22 Javascript
Angular2使用vscode断点调试ts文件的方法
Dec 13 Javascript
解决JavaScript layui 下拉框不显示的问题
Aug 14 Javascript
vue富文本框(插入文本、图片、视频)的使用及问题小结
Aug 17 Javascript
解决element-ui中下拉菜单子选项click事件不触发的问题
Aug 22 Javascript
更改BootStrap popover的默认样式及popover简单用法
Sep 13 Javascript
vue使用laydate时间插件的方法
Nov 14 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
删除及到期域名的查看(抢域名必备哦)
2008/05/14 PHP
CURL状态码列表(详细)
2013/06/27 PHP
使用PHP编写的SVN类
2013/07/18 PHP
php实现获取及设置用户访问页面语言类
2014/09/24 PHP
php include类文件超时问题处理
2015/02/06 PHP
PHP实现上传图片到 zimg 服务器
2016/10/19 PHP
PHP单例模式应用示例【多次连接数据库只实例化一次】
2018/12/18 PHP
jquery 按钮状态效果 正常、移上、按下
2013/08/12 Javascript
Js可拖拽放大的层拖动特效实现方法
2015/02/25 Javascript
js实现遍历含有input的table实例
2015/12/07 Javascript
vue的toast弹窗组件实例详解
2018/05/14 Javascript
安装vue-cli的简易过程
2018/05/22 Javascript
Vue优化:常见会导致内存泄漏问题及优化详解
2020/08/04 Javascript
Python深入学习之上下文管理器
2014/08/31 Python
CentOS 7下Python 2.7升级至Python3.6.1的实战教程
2017/07/06 Python
Python爬虫工程师面试问题总结
2018/03/22 Python
python爬虫之线程池和进程池功能与用法详解
2018/08/02 Python
python算法与数据结构之单链表的实现代码
2019/06/27 Python
python 批量修改 labelImg 生成的xml文件的方法
2019/09/09 Python
Python字典底层实现原理详解
2019/12/18 Python
tensorflow将图片保存为tfrecord和tfrecord的读取方式
2020/02/17 Python
python修改linux中文件(文件夹)的权限属性操作
2020/03/05 Python
如何在sublime编辑器中安装python
2020/05/20 Python
Python数据可视化图实现过程详解
2020/06/12 Python
Python如何定义有默认参数的函数
2020/08/10 Python
Bjorn Borg官方网上商店:国际运动时尚品牌
2016/08/27 全球购物
美国体育用品商店:Rally House(NCAA、NFL、MLB、NBA、NHL和MLS)
2018/01/03 全球购物
加拿大租车网站:Enterprise Rent-A-Car
2018/07/26 全球购物
日语专业推荐信
2013/11/12 职场文书
军训鉴定表自我鉴定
2014/02/13 职场文书
报关报检委托书
2014/04/08 职场文书
质量保证书范本
2014/04/29 职场文书
2015年安全生产责任书
2015/01/30 职场文书
巴黎圣母院读书笔记
2015/06/26 职场文书
python实现层次聚类的方法
2021/11/01 Python
GO语言字符串处理函数之处理Strings包
2022/04/14 Golang