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事件冒泡
Jul 17 Javascript
javascript插件开发的一些感想和心得
Feb 28 Javascript
第一次接触JS require.js模块化工具
Apr 17 Javascript
JS中substring与substr的用法
Nov 16 Javascript
原生javascript移动端滑动banner效果
Mar 10 Javascript
vue2.0结合Element实现select动态控制input禁用实例
May 12 Javascript
Node.JS利用PhantomJs抓取网页入门教程
May 19 Javascript
纯js实现动态时间显示
Sep 07 Javascript
使用watch在微信小程序中实现全局状态共享
Jun 03 Javascript
如何自定义微信小程序tabbar上边框的颜色
Jul 09 Javascript
5个你不知道的JavaScript字符串处理库(小结)
Jun 01 Javascript
JS实现购物车基本功能
Nov 08 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
学习使用PHP数组
2006/10/09 PHP
PHP4 与 MySQL 数据库操作函数详解
2006/10/09 PHP
PHP二维索引数组的遍历实例分析【2种方式】
2019/06/24 PHP
不常用但很实用的PHP预定义变量分析
2019/06/25 PHP
PHP常用函数之base64图片上传功能详解
2019/10/21 PHP
DIV菜单层实现代码
2010/11/19 Javascript
js字符串转成JSON
2013/11/07 Javascript
jquery判断元素的子元素是否存在的示例代码
2014/02/04 Javascript
回车直接实现点击某按钮的效果即触发单击事件
2014/02/27 Javascript
Javascript函数的参数
2015/07/16 Javascript
js实现点击文本框显示日期选择器特效代码分享
2020/05/21 Javascript
两种js监听滚轮事件的实现方法
2016/05/13 Javascript
ionic实现带字的toggle滑动组件
2016/08/27 Javascript
微信小程序 前端源码逻辑和工作流详解
2016/10/08 Javascript
Bootstrap fileinput文件上传预览插件使用详解
2017/05/16 Javascript
JavaScript中最常用的10种代码简写技巧总结
2017/06/28 Javascript
详解AngularJS跨页面传值(ui-router)
2017/08/23 Javascript
vue组件父子间通信之综合练习(聊天室)
2017/11/07 Javascript
帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
2019/08/23 Javascript
vue制作toast组件npm包示例代码
2020/10/29 Javascript
[02:07]2018DOTA2亚洲邀请赛主赛事第三日五佳镜头 fy极限反杀
2018/04/06 DOTA
[00:32]2018DOTA2亚洲邀请赛Mineski出场
2018/04/04 DOTA
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
2009/04/09 Python
Python字符串特性及常用字符串方法的简单笔记
2016/01/04 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
2017/11/29 Python
深入浅析python3中的unicode和bytes问题
2019/07/03 Python
python中tkinter的应用:修改字体的实例讲解
2019/07/17 Python
python实现各种插值法(数值分析)
2019/07/30 Python
Python使用get_text()方法从大段html中提取文本的实例
2019/08/27 Python
python 实现return返回多个值
2019/11/19 Python
解决TensorFlow训练模型及保存数量限制的问题
2021/03/03 Python
工艺员岗位职责
2014/02/11 职场文书
高效课堂标语
2014/06/26 职场文书
2016年第29个世界无烟日宣传活动总结
2016/04/06 职场文书
2019个人工作计划书的格式及范文!
2019/07/04 职场文书
Go各时间字符串使用解析
2021/04/02 Golang