JQuery阻止冒泡事件on绑定中异常情况分析
事件冒泡可能会引起意料之外的效果,有时候需要阻止事件的冒泡行为。
<body>
<a id="p" href="http://www.baidu.com" target="_blank">我是超级链接<button id="sub">子按钮</button></a>
<div id="text">
</div>
</body>
<script>
$(function(){
$("#p").click(function(event){
$("#text").append("<p>父亲元素被点击</p>");
}) $("#sub").click(function(event){
$("#text").append("<p>子元素被点击</p>");
event.stopPropagation(); //只阻止了冒泡事件, 默认默认行为没有阻止 })
})
</script>



<script>
$(function(){
$("#p").click(function(event){
$("#text").append("<p>父亲元素被点击</p>");
}) $("#sub").click(function(event){
$("#text").append("<p>子元素被点击</p>");
event.preventDefault(); //只阻止了默认事件,冒泡事件没有阻止
})
})
</script>
event. preventDefault()加上后,有阻止了默认行为,没有打开新的href窗口,但是没有阻止冒泡事件,父亲的click还是触发了:

3:return false;
<script>
$(function(){
$("#p").click(function(event){
$("#text").append("<p>父亲元素被点击</p>");
}) $("#sub").click(function(event){
$("#text").append("<p>子元素被点击</p>");
return false; //冒泡事件和默认事件都阻止
})
})
</script>
return false加上后既没有冒泡,也没有打开新窗口:

<body id="body">
<div id="bb">
<a id="p" href="http://www.baidu.com" target="_blank" >我是超级链接<button id="sub">子按钮</button></a>
</div>
<div id="text">
</div>
</body>
<script>
$(function(){
/父亲节点a绑定到body中
$("#body").on("click","#p",function(event){
$("#text").append("<p>父亲元素被点击</p>");
})
//孩子节点绑定在div中
$("#bb").on("click","#sub",function(event){
$("#text").append("<p>子元素被点击</p>");
event.stopPropagation(); //只阻止了冒泡事件, 默认默认行为没有阻止
})
})
13 </script>
测试结果:有阻止冒泡事件

<script>
$(function(){
/父亲节点a绑定到div中
$("#bb").on("click","#p",function(event){
$("#text").append("<p>父亲元素被点击</p>");
})
//孩子节点绑定在body中
$("#body").on("click","#sub",function(event){
$("#text").append("<p>子元素被点击</p>");
event.stopPropagation(); //只阻止了冒泡事件, 默认默认行为没有阻止
})
})
</script>
测试结果:阻止冒泡失败,并且是父亲元素a的click先触发


<body id="body">
<div id="bb">
<a id="p" href="http://www.baidu.com" target="_blank" onclick="test()">我是超级链接<button id="sub">子按钮</button></a>
</div>
<div id="text">
</div>
</body>
<script>
$(function(){
$("#bb").on("click","#sub",function(event){
$("#text").append("<p>子元素被点击</p>");
event.stopPropagation(); //只阻止了冒泡事件, 默认默认行为没有阻止
})
})
function test(){
$("#text").append("<p>父亲元素被点击</p>");
}
</script>
测试结果:阻止冒泡失败,并且是父亲元素a的click先触发

<body id="body">
<div id="bb">
<a id="p" href="http://www.baidu.com" target="_blank">我是超级链接<button id="sub" onclick="test(event)">子按钮</button></a>
</div>
<div id="text">
</div>
</body>
<script>
$(function(){
//父亲绑定到body
$("#body").on("click","#p",function(event){
$("#text").append("<p>父亲元素被点击</p>");
})
})
function test(event){ //event在onclick那边直接传入,这样才支持所有浏览器
$("#text").append("<p>子元素被点击</p>");
event.stopPropagation();
}
</script>
测试结果:阻止冒泡成功

JQuery阻止冒泡事件on绑定中异常情况分析的更多相关文章
- jquery阻止冒泡事件行为发生
<div onclick="a()"> <p onclick="b()"></p> </div> div和p元素 ...
- jquery 阻止冒泡事件和阻止默认事件
jQuery 冒泡和默认事件: <!DOCTYPE html> <html lang="en"> <head> <meta charset ...
- 【笔记】jquery阻止冒泡事件发生的语句
时间触发时会执行两个步骤:1.捕获 2.冒泡,而很多浏览器包括jquery都不支持捕获动作所以只能执行冒泡动作. 所谓冒泡就是当点击就是事件的执行顺序,本人的理解为:但某一元素触发时间时它的祖先元素( ...
- jquery阻止冒泡事件:$('span').bind("click",function(event){event.stopPropagation();})(有用源)
冒泡事件就是点击子节点,会向上触发父节点,祖先节点的点击事件. <body> <div id="content"> 外层div元素 <span> ...
- 点击tr实现选择checkbox功能,点击checkobx的时候阻止冒泡事件, jquery给checkbox添加checked属性或去掉checked属性不能使checkobx改变状态
给tr添加点击事件,使用find方法查找tr下的所有层级的元素,children只查找下一层级的元素,所以使用find.find的返回值为jquery对象,在这个项目中不知道为什么使用jquery给c ...
- 关于jquery stopPropagation()阻止冒泡事件
我们经常会遇到点击两个或者多个重叠的层事件的时候,往往点击最里的的一层会接连触发外面的点击事件.这时候就需要用到stopPropagation事件即阻止冒泡事件html代码如下<!DOCTYPE ...
- jquery的冒泡事件event.stopPropagation()
js中的冒泡事件与事件监听 冒泡事件 js中“冒泡事件”并不是能实际使用的花哨技巧,它是一种对js事件执行顺序的机制,“冒泡算法”在编程里是一个经典问题,冒泡算法里面的冒泡应该 说是交换更加准确:js ...
- 微信小程序--阻止冒泡事件
微信小程序事件的使用方式 在组件中绑定一个事件处理函数. 如bindtap,当用户点击该组件的时候会在该页面对应的Page中找到相应的事件处理函数. <view id="tapTest ...
- DOM2级事件对象、添加事件、阻止默认事件、阻止冒泡事件、获取事件对象目标的兼容处理
事件对象——兼容处理 /* * 功能: 事件对象兼容 * 参数: 表示常规浏览器的事件对象e */ function getEvent(e) { // 如果存在e存在,直接返回,否则返回window. ...
随机推荐
- Android学习笔记(六)——活动的启动模式
//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 活动的启动模式共有四种: standard.singleTop.singleTask 和 singleInst ...
- 关于在android 4.2.2 上运行runlmbench
在剑锋的基础上加一些自己笔记,让自己更懂一些这个流程. 参考:http://www.cnblogs.com/zengjfgit/p/5731655.html runlmbench 是一款在linux ...
- phpDocumentor 注释语法详解
PHPDocumentor是强大的代码注释生成器,本文对各个参数进行了简单地的总结: @abstract-------------使用@abstract标记来声明一个方法,类变量或类必须重新定义子类中 ...
- python成长之路 :线程、进程和协程
python线程 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分 ...
- Access an instance through a console
VNC or SPICE is used to view the console output of an instance, regardless of whether or not the con ...
- 【GoLang】GoLang 错误处理 -- 使用 error is value 的思路处理,检查并处理error
吐血推荐: https://dave.cheney.net/2016/04/27/dont-just-check-errors-handle-them-gracefully 参考资料: https:/ ...
- Spring Boot+AngularJS中因为跨域导致Session丢失
http://blog.csdn.net/dalangzhonghangxing/article/details/52446821 如果还在为跨域问题烦恼,请查看博主的 解决angular+sprin ...
- 提高AdoQuery的速度
用TDataSet及其派生类如TAdoQuery对数据库进行查找时, 如果TDataSet类 没有与数据感知控件相连,通过调用DisableControls可以极大地提高查询速度 特别是在数据比较多的 ...
- ACM/ICPC 之 Floyd范例两道(POJ2570-POJ2263)
两道以Floyd算法为解法的范例,第二题如果数据量较大,须采用其他解法 POJ2570-Fiber Network //经典的传递闭包问题,由于只有26个公司可以采用二进制存储 //Time:141M ...
- MongoDB 副本集管理(不定时更新)
简介: 前面介绍完了副本集的搭建.用户的管理.参数和日常操作的说明,那副本集搭建好该如何管理呢?现在来说明下副本集的日常查看和管理. 说明: 1)查看命令行参数:db.serverCmdLineOpt ...