js阻止冒泡及jquery阻止事件冒泡示例介绍


Posted in Javascript onNovember 19, 2013

js阻止冒泡
在阻止冒泡的过程中,W3C和IE采用的不同的方法,那么我们必须做以下兼容。

function stopPro(evt){ 
var e = evt || window.event; 
//returnValue如果设置了该属性,它的值比事件句柄的返回值优先级高。把这个属性设置为 fasle, 
//可以取消发生事件的源元素的默认动作。 
//window.event?e.returnValue = false:e.preventDefault(); 
window.event?e.cancelBubble=true:e.stopPropagation(); 
}

或者:
function cancelBubble(e) { 
var evt = e ? e : window.event; 
if (evt.stopPropagation) { 
//W3C 
evt.stopPropagation(); 
} 
else { 
//IE 
evt.cancelBubble = true; 
}
 
JQuery 提供了两种方式来阻止事件冒泡。
方式一:event.stopPropagation();
$("#div1").mousedown(function(event){ 
event.stopPropagation(); 
});

方式二:return false;
$("#div1").mousedown(function(event){ 
return false; 
});

Jquery阻止默认动作即通知浏览器不要执行与事件关联的默认动作。
例如:
$("a").click(function(event){ 
event.preventDefault(); //阻止默认动作即该链接不会跳转。 
alert(4);//但是这个还会弹出 
event.stopPropagation();//阻止冒泡事件,上级的单击事件不会被调用 
return false;//不仅阻止了事件往上冒泡,而且阻止了事件本身 
});

但是这两种方式是有区别的。return false 不仅阻止了事件往上冒泡,而且阻止了事件本身。event.stopPropagation() 则只阻止事件往上冒泡,不阻止事件本身。
场景应用:Google 和 百度的联想框,当弹出下拉列表,用户在下拉列表区域按下鼠标时需要让光标仍然保持在文本输入框。
Jquery案例:
<script src="js/jquery-1.4.3.js"></script> 
<script type="text/javascript"> 
$(function(){ 
$("#aa").click(function(event){ 
alert("aa"); 
event.preventDefault(); 
event.stopPropagation(); 
alert(3); 
}); 
$("#ee").click(function(){ 
alert("ee"); 
}); 
$("a").click(function(event){ 
event.preventDefault(); 
alert(4); 
event.stopPropagation(); 
return false; 
}); 
}); 
</script> 
</head> 
<body> 
<div id="ee"> 
aaaaaaa 
<input id="aa" type="button" value="test" /> 
<a href="http://baidu.com">baidu.com</a> 
</div> 
</body>

js案例:
function tt(){ 
alert("div"); 
} 
function ttt(){ 
var e = arguments.callee.caller.arguments[0] || window.event; 
window.event?e.returnValue = false:e.preventDefault(); 
alert(3); 
window.event?e.cancelBubble:e.stopPropagation(); 
alert(4); 
} 
</script> 
</head> 
<body> 
<div onclick = "tt();"> 
ccccc 
<a href="http://baidu.com" onclick="ttt();">baidu.com</a> 
</div>
Javascript 相关文章推荐
jquery动态调整div大小使其宽度始终为浏览器宽度
Jun 06 Javascript
jquery滚动到顶部底部代码
Apr 20 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
Jun 01 Javascript
JS+CSS实现精美的二级导航效果代码
Sep 17 Javascript
微信小程序 wx:key详细介绍
Oct 28 Javascript
移动端点击态处理的三种实现方式
Jan 12 Javascript
js实现模糊匹配功能
Feb 15 Javascript
element-ui 表格实现单元格可编辑的示例
Feb 26 Javascript
AngularJs分页插件使用详解
Jun 30 Javascript
vue弹窗插件实战代码
Sep 08 Javascript
JS绘图Flot应用图形绘制异常解决方案
Oct 16 Javascript
Vertx基于EventBus发送接受自定义对象
Nov 16 Javascript
禁止ajax缓存获取程序最新数据的方法
Nov 19 #Javascript
JQueryiframe页面操作父页面中的元素与方法(实例讲解)
Nov 19 #Javascript
jQuery控制iFrame(实例代码)
Nov 19 #Javascript
jquery 检测元素是否存在的实例代码
Nov 19 #Javascript
JS复制内容到剪切板的实例代码(兼容IE与火狐)
Nov 19 #Javascript
js 剪切板的用法(clipboardData.setData)与js match函数介绍
Nov 19 #Javascript
JavaScript中instanceof运算符的用法总结
Nov 19 #Javascript
You might like
手冲咖啡应该是现代精品咖啡店的必备选项吗?
2021/03/03 冲泡冲煮
PHP脚本数据库功能详解(下)
2006/10/09 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
2014/06/12 PHP
PHP实现的比较完善的购物车类
2014/12/02 PHP
启用Csrf后POST数据时出现的400错误
2015/07/05 PHP
PHP 文件上传后端处理实用技巧方法
2017/01/06 PHP
PHP针对伪静态的注入总结【附asp与Python相关代码】
2017/08/01 PHP
PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
2019/02/28 PHP
js 去除字符串第一位逗号的方法
2014/06/07 Javascript
JavaScript中的对象序列化介绍
2014/12/30 Javascript
BOM系列第一篇之定时器setTimeout和setInterval
2016/08/17 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
2016/09/20 Javascript
设置cookie指定时间失效(实例代码)
2017/05/28 Javascript
详谈ES6中的迭代器(Iterator)和生成器(Generator)
2017/07/31 Javascript
JavaScript中各数制转换全面总结
2017/08/21 Javascript
JS库之Waypoints的用法详解
2017/09/13 Javascript
layer弹出子iframe层父子页面传值的实现方法
2018/11/22 Javascript
JavaScript ES6中的简写语法总结与使用技巧
2018/12/30 Javascript
vue-cli3项目展示本地Markdown文件的方法
2019/06/07 Javascript
Vue+Element-UI实现上传图片并压缩
2019/11/26 Javascript
javascript代码实现简易计算器
2021/01/25 Javascript
使用webpack和rollup打包组件库的方法
2021/02/25 Javascript
Python根据区号生成手机号码的方法
2015/07/08 Python
Python算法输出1-9数组形成的结果为100的所有运算式
2017/11/03 Python
python保存log日志,实现用log日志画图
2019/12/24 Python
详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法
2021/01/07 Python
移动web模拟客户端实现多方框输入密码效果【附代码】
2016/03/25 HTML / CSS
美国羊皮公司:Overland
2018/01/15 全球购物
Ryderwear澳洲官网:澳大利亚高端健身训练装备品牌
2018/09/18 全球购物
小米俄罗斯授权商店:Xiaomi俄罗斯
2019/12/08 全球购物
司机岗位职责
2015/02/04 职场文书
2015年教研室工作总结范文
2015/05/23 职场文书
Redis RDB技术底层原理详解
2021/09/04 Redis
nginx从安装到配置详细说明(安装,安全配置,防盗链,动静分离,配置 HTTPS,性能优化)
2022/02/12 Servers
配置nginx负载均衡
2022/05/06 Servers
CentOS7安装MySQL8的超级详细教程(无坑!)
2022/06/10 Servers