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使用正则表达式验证email地址的方法
Jan 22 Javascript
jQuery on()方法使用技巧详解
Apr 16 Javascript
jquery实现网页的页面平滑滚动效果代码
Nov 02 Javascript
一道JS前端闭包面试题解析
Dec 25 Javascript
基于jquery实现轮播特效
Apr 22 Javascript
ionic 上拉菜单(ActionSheet)实例代码
Jun 06 Javascript
setTimeout学习小结
Feb 08 Javascript
Extjs 中的 Treepanel 实现菜单级联选中效果及实例代码
Aug 22 Javascript
js求数组中全部数字可拼接出的最大整数示例代码
Aug 25 Javascript
JS实现利用闭包判断Dom元素和滚动条的方向示例
Aug 26 Javascript
Openlayers学习之加载鹰眼控件
Sep 28 Javascript
vue实现登陆页面开发实践
May 30 Vue.js
禁止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
Yii框架关联查询with用法分析
2014/12/02 PHP
php使用pdo连接报错Connection failed SQLSTATE的解决方法
2014/12/15 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
2016/11/15 PHP
jquery获取tr中控件值并操作tr实现思路
2013/03/27 Javascript
js使用for循环及if语句判断多个一样的name
2014/09/09 Javascript
IE7浏览器窗口大小改变事件执行多次bug及IE6/IE7/IE8下resize问题
2015/08/21 Javascript
jquery实现在网页指定区域显示自定义右键菜单效果
2015/08/25 Javascript
简单了解JavaScript操作XPath的一些基本方法
2016/06/03 Javascript
9个让JavaScript调试更简单的Console命令
2016/11/14 Javascript
jQuery实现的购物车物品数量加减功能代码
2016/11/16 Javascript
jquery插件bootstrapValidator表单验证详解
2016/12/15 Javascript
Angular.JS内置服务$http对数据库的增删改使用教程
2017/05/07 Javascript
vue2.0 axios跨域并渲染的问题解决方法
2018/03/08 Javascript
p5.js入门教程和基本形状绘制
2018/03/15 Javascript
vue构建动态表单的方法示例
2018/09/22 Javascript
vue-cli3+typescript新建一个项目的思路分析
2019/08/06 Javascript
使用layui实现树形结构的方法
2019/09/20 Javascript
JavaScript实现拖拽效果
2020/03/16 Javascript
js实现贪吃蛇游戏(简易版)
2020/09/29 Javascript
python标准算法实现数组全排列的方法
2015/03/17 Python
浅谈Python中range和xrange的区别
2017/12/20 Python
[原创]windows下Anaconda的安装与配置正解(Anaconda入门教程)
2018/04/05 Python
Tensorflow使用tfrecord输入数据格式
2018/06/19 Python
实例讲解Python脚本成为Windows中运行的exe文件
2019/01/24 Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
2019/04/15 Python
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
2019/09/23 Python
5款实用的python 工具推荐
2020/10/13 Python
Looking4Parking美国:全球排名第一的机场停车比较品牌
2019/08/26 全球购物
Brasty罗马尼亚:购买手表、香水、化妆品、珠宝
2020/04/21 全球购物
高中生的自我评价
2014/03/04 职场文书
中班幼儿评语大全
2014/04/30 职场文书
教师纪念9.18事件演讲稿范文
2014/09/14 职场文书
七年级地理教学计划
2015/01/22 职场文书
MySQL 8.0 Online DDL快速加列的相关总结
2021/06/02 MySQL
【海涛教你打dota】体验一超神发条:咱是抢盾专业户
2022/04/01 DOTA
Java中Dijkstra(迪杰斯特拉)算法
2022/05/20 Java/Android