在jquery里我经常看到有人两种都用
js
a.click(function () { event.stopPropagation() return false; });
是因为兼容性考虑吗?我只是想阻止后面的事件继续运行,到底该用哪种
如果只是想阻止冒泡,则使用 event.stopPropogation()
,
其他的两个与你的需求有出入.return false;
和 event.preventDefault()
会阻止 a
标签的默认行为, 比如 最简单的 浏览器跳转
.
白话就是点了连接跳不走.
一般情况下使用在jquery中使用return false,既阻止了默认事件也阻止了冒泡事件
实际上如果a标签的href=“javascript:void(0)”的时候,
在IE6以上的浏览器中增加click事件是不用使用return false的
但是在IE6中,会导致链接失效,因为在click事件执行后执行了默认事件javascript:void(0)
所以这个时候很多人写成return false, 这个基本是暴力解决方案
当然使用preventDefault()就可以解决问题了。
我想代码中使用stopPropagation(),可能是他没有弄明白到底是什么原因导致的链接失效吧
preventDefault
, stopPropogation
, return false
对比
方法 | 事件冒泡 | 默认事件 |
---|---|---|
return false | 不冒泡 | 不执行 |
preventDefault() | 冒泡 | 不执行 |
stopPropogation() | 不冒泡 | 执行 |
也就是说:
function() {
return false;
}
// 相当于
function(e) {
e.preventDefault();
e.stopPropagation();
}