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 相关文章推荐
js prototype截取字符串函数
Apr 01 Javascript
奉献给JavaScript初学者的编写开发的七个细节
Jan 11 Javascript
BootStrap创建响应式导航条实例代码
May 31 Javascript
基于Marquee.js插件实现的跑马灯效果示例
Jan 25 Javascript
浅谈angularjs依赖服务注入写法的注意点
Apr 24 Javascript
vue数字类型过滤器的示例代码
Sep 07 Javascript
前端常见跨域解决方案(全)
Sep 19 Javascript
JavaScript使用面向对象实现的拖拽功能详解
Jun 12 Javascript
Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解
Aug 07 Javascript
在pycharm中开发vue的方法步骤
Mar 04 Javascript
javascript实现页面的实时时钟显示示例
Aug 06 Javascript
一篇文章看懂JavaScript中的回调
Jan 05 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导出csv数据在浏览器中输出提供下载或保存到文件的示例
2014/04/24 PHP
php过滤HTML标签、属性等正则表达式汇总
2014/09/22 PHP
php去除数组中重复数据
2014/11/18 PHP
php支付宝手机网页支付类实例
2015/03/04 PHP
刷新PHP缓冲区为你的站点加速
2015/10/10 PHP
php mysqli查询语句返回值类型实例分析
2016/06/29 PHP
AJAX分页的代码(后台asp.net)
2011/02/14 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
2014/04/29 Javascript
jQuery实现首页顶部可伸缩广告特效代码
2015/04/15 Javascript
jquery操作angularjs对象
2015/06/26 Javascript
Nginx上传文件全部缓存解决方案
2015/08/17 Javascript
学习使用jquery iScroll.js移动端滚动条插件
2020/03/24 Javascript
JS 实现banner图片轮播效果(鼠标事件)
2017/08/04 Javascript
Angularjs实现下拉框联动的示例代码
2017/08/22 Javascript
JS实现合并json对象的方法
2017/10/10 Javascript
解决Vue 项目打包后favicon无法正常显示的问题
2018/09/01 Javascript
vue vue-Router默认hash模式修改为history需要做的修改详解
2018/09/13 Javascript
Vue高版本中一些新特性的使用详解
2018/09/25 Javascript
React项目动态设置title标题的方法示例
2018/09/26 Javascript
angularJs在多个控制器中共享服务数据的方法
2018/09/30 Javascript
vuex actions异步修改状态的实例详解
2019/11/06 Javascript
[02:23]DOTA2英雄基础教程 幻影长矛手
2013/12/09 DOTA
Python装饰器基础详解
2016/03/09 Python
Python字典生成式、集合生成式、生成器用法实例分析
2020/01/07 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
2020/01/08 Python
html5.2 dialog简介详解
2018/02/27 HTML / CSS
美国婚礼礼品网站:MyWeddingFavors
2018/09/26 全球购物
日本热销NO.1胶原蛋白冻:Aishitoto爱希特多
2019/06/20 全球购物
Crabtree & Evelyn欧盟:豪华洗浴、身体和护发
2021/03/09 全球购物
应届毕业生个人自荐信范文
2013/11/30 职场文书
聘用意向书
2014/07/29 职场文书
公安机关纪律作风整顿个人剖析材料材料
2014/10/10 职场文书
夫妻房产协议书的格式
2014/10/11 职场文书
2015年暑期社会实践报告
2015/07/13 职场文书
一文搞懂MySQL索引页结构
2022/02/28 MySQL
CSS使用Flex和Grid布局实现3D骰子
2022/08/05 HTML / CSS