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 相关文章推荐
JqGrid web打印实现代码
May 31 Javascript
使用javascript做的一个随机点名程序
Feb 13 Javascript
JSONP跨域GET请求解决Ajax跨域访问问题
Dec 31 Javascript
js代码实现随机颜色的小方块
Jul 30 Javascript
javascript创建cookie、读取cookie
Mar 31 Javascript
layui radio性别单选框赋值方法
Aug 15 Javascript
vue 弹框产生的滚动穿透问题的解决
Sep 21 Javascript
vue中子组件传递数据给父组件的讲解
Jan 27 Javascript
JS原型与继承操作示例
May 09 Javascript
JavaScript实现文件下载并重命名代码实例
Dec 12 Javascript
利用webpack理解CommonJS和ES Modules的差异区别
Jun 16 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
Jul 22 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下通过QRCode类库创建中间带网站LOGO的二维码
2014/07/12 PHP
php+html5使用FormData对象提交表单及上传图片的方法
2015/02/11 PHP
javascript 面向对象编程基础:继承
2009/08/21 Javascript
document.onreadystatechange事件的用法分析
2009/10/17 Javascript
Javascript 类与静态类的实现
2010/04/01 Javascript
使用js在页面中绘制表格核心代码
2013/09/16 Javascript
在页面加载完成后通过jquery给多个span赋值
2014/05/21 Javascript
JavaScript中的null和undefined区别介绍
2015/01/01 Javascript
jQuery异步上传文件插件ajaxFileUpload详细介绍
2015/05/19 Javascript
JS实现很实用的对联广告代码(可自适应高度)
2015/09/18 Javascript
深入浅析JavaScript中对事件的三种监听方式
2015/09/29 Javascript
深入解析JavaScript中函数的Currying柯里化
2016/03/19 Javascript
js实现鼠标左右移动,图片也跟着移动效果
2017/01/25 Javascript
微信小程序 页面传值详解
2017/03/10 Javascript
JS闭包可被利用的常见场景小结
2017/04/09 Javascript
基于JS对象创建常用方式及原理分析
2017/06/28 Javascript
jquery ajax异步提交表单数据的方法
2017/10/27 jQuery
vue指令之表单控件绑定v-model v-model与v-bind结合使用
2019/04/17 Javascript
Vue父子传递实例讲解
2020/02/14 Javascript
Python使用自带的ConfigParser模块读写ini配置文件
2016/06/26 Python
利用Python将文本中的中英文分离方法
2018/10/31 Python
PyCharm配置mongo插件的方法
2018/11/30 Python
python 实现UTC时间加减的方法
2018/12/31 Python
简单了解python的break、continue、pass
2019/07/08 Python
Python查找不限层级Json数据中某个key或者value的路径方式
2020/02/27 Python
Python常用数据分析模块原理解析
2020/07/20 Python
python判断变量是否为列表的方法
2020/09/17 Python
PyCharm 2020.2下配置Anaconda环境的方法步骤
2020/09/23 Python
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
PHP面试题集
2016/12/18 面试题
经理秘书岗位职责
2013/11/14 职场文书
2014学年自我鉴定
2014/02/23 职场文书
保卫科工作岗位职责
2014/03/01 职场文书
颐和园英文导游词
2015/01/30 职场文书
2015年度电厂个人工作总结
2015/05/13 职场文书
阿里云服务器Ubuntu 20.04上安装Odoo 15
2022/05/20 Servers