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 相关文章推荐
json格式化/压缩工具 Chrome插件扩展版
May 25 Javascript
jQuery中add实现同时选择两个id对象
Oct 22 Javascript
jQuery find和children方法使用
Jan 31 Javascript
js中通过split函数分割字符串成数组小例子
Sep 21 Javascript
分享一款基于jQuery的视频播放插件
Oct 09 Javascript
JavaScript中使用document.write向页面输出内容实例
Oct 16 Javascript
node.js读取文件到字符串的方法
Jun 29 Javascript
JavaScript获取图片像素颜色并转换为box-shadow显示
Mar 11 Javascript
JS动态加载脚本并执行回调操作
Aug 24 Javascript
javascript数据结构之串的概念与用法分析
Apr 12 Javascript
使用electron将vue-cli项目打包成exe的方法
Sep 29 Javascript
Vue前端判断数据对象是否为空的实例
Sep 02 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/03/04 欧美动漫
支持中文的php加密解密类代码
2011/11/27 PHP
php简单操作mysql数据库的类
2015/04/16 PHP
PHP设计模式之简单工厂和工厂模式实例分析
2019/03/25 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
jQuery 获取URL参数的插件
2010/03/04 Javascript
javascript实现tabs选项卡切换效果(扩展版)
2013/03/19 Javascript
使用原生JS实现弹出层特效
2014/12/22 Javascript
JavaScript动态修改网页元素内容的方法
2015/03/21 Javascript
jQuery基本选择器和层次选择器学习使用
2017/02/27 Javascript
详解ES6之用let声明变量以及let loop机制
2017/07/15 Javascript
react native实现往服务器上传网络图片的实例
2017/08/07 Javascript
使用RN Animated做一个“添加购物车”动画的方法
2018/09/12 Javascript
vue中axios请求的封装实例代码
2019/03/23 Javascript
JS判断数组里是否有重复元素的方法小结
2019/05/21 Javascript
JS中的算法与数据结构之列表(List)实例详解
2019/08/16 Javascript
layui form表单提交后实现自动刷新
2019/10/25 Javascript
vue实现图片上传到后台
2020/06/29 Javascript
利用JS判断元素是否为数组的方法示例
2021/01/08 Javascript
Windows下使Python2.x版本的解释器与3.x共存的方法
2015/10/25 Python
Python爬取网易云音乐上评论火爆的歌曲
2017/01/19 Python
Python实现按学生年龄排序的实际问题详解
2017/08/29 Python
python爬取淘宝商品销量信息
2018/11/16 Python
python2和python3的输入和输出区别介绍
2018/11/20 Python
python实现简单聊天室功能 可以私聊
2019/07/12 Python
Python (Win)readline和tab补全的安装方法
2019/08/27 Python
Django框架反向解析操作详解
2019/11/28 Python
tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)
2020/04/22 Python
Django windows使用Apache实现部署流程解析
2020/10/12 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
2021/03/02 Python
使用CSS3的rem属性制作响应式页面布局的要点解析
2016/05/24 HTML / CSS
意大利专业化妆品品牌:KIKO MILANO
2017/02/01 全球购物
保护环境建议书100字
2014/05/13 职场文书
印刷技术专业自荐信
2014/09/18 职场文书
租房协议书范例
2014/10/14 职场文书
开展党的群众路线教育实践活动情况汇报
2014/11/05 职场文书