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引用对象的方法
Jan 11 Javascript
指定位置如果有图片显示图片,无图片显示广告的JS
Jun 05 Javascript
JavaScript输入邮箱自动提示实例代码
Jan 13 Javascript
Json实现异步请求提交评论无需跳转其他页面
Oct 11 Javascript
js精美的幻灯片画集特效代码分享
Aug 29 Javascript
ajax接收后台数据在html页面显示
Feb 19 Javascript
JS实现的随机排序功能算法示例
Jun 09 Javascript
jQuery简单判断值是否存在于数组中的方法示例
Apr 17 jQuery
Vue结合Video.js播放m3u8视频流的方法示例
May 04 Javascript
Js中将Long转换成日期格式的实现方法
Jun 05 Javascript
加快Vue项目的开发速度的方法
Dec 12 Javascript
详解vue3.0 的 Composition API 的一种使用方法
Oct 26 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运算符的知识大全
2011/11/03 PHP
PHP使用trim函数去除字符串左右空格及特殊字符实例
2016/01/07 PHP
mysql_escape_string()函数用法分析
2016/04/25 PHP
PHP 扩展Memcached命令用法实例总结
2020/06/04 PHP
JavaScript的parseInt 进制问题
2009/05/07 Javascript
读jQuery之十 事件模块概述
2011/06/27 Javascript
javascript实现显示和隐藏div方法汇总
2015/08/14 Javascript
基于Jquery实现焦点图淡出淡入效果
2015/11/30 Javascript
微信小程序 常用工具类详解及实例
2017/02/15 Javascript
jQuery实现导航回弹效果
2017/02/27 Javascript
详解在Vue中如何使用axios跨域访问数据
2017/07/07 Javascript
微信小程序 本地图片按照屏幕尺寸处理
2017/08/04 Javascript
关于Vue Webpack2单元测试示例详解
2017/08/14 Javascript
微信小程序的mpvue框架快速上手指南
2019/05/15 Javascript
Vue基础学习之项目整合及优化
2019/06/02 Javascript
flexible.js实现移动端rem适配方案
2020/04/07 Javascript
vue 添加和编辑用同一个表单,el-form表单提交后清空表单数据操作
2020/08/03 Javascript
python str与repr的区别
2013/03/23 Python
Python操作SQLite简明教程
2014/07/10 Python
详解python字节码
2018/02/07 Python
Django压缩静态文件的实现方法详析
2018/08/26 Python
python中pika模块问题的深入探究
2018/10/13 Python
Python Pexpect库的简单使用方法
2019/01/29 Python
Python递归求出列表(包括列表中的子列表)的最大值实例
2020/02/27 Python
亚马逊墨西哥站:Amazon.com.mx
2018/08/26 全球购物
国贸专业个人求职信分享
2013/12/04 职场文书
毕业生的自我评价分享
2013/12/18 职场文书
竞争上岗演讲稿
2014/01/05 职场文书
初中政治教学反思
2014/01/17 职场文书
优秀教导主任事迹材料
2014/05/09 职场文书
个人欠款担保书
2014/05/20 职场文书
最常使用的求职信
2014/05/25 职场文书
如何用python绘制雷达图
2021/04/24 Python
golang 实现Location跳转方式
2021/05/02 Golang
mysql定时自动备份数据库的方法步骤
2021/07/07 MySQL
Vue提供的三种调试方式你知道吗
2022/01/18 Vue.js