首页 > 阻止事件继续运行,我到底该用哪个函数

阻止事件继续运行,我到底该用哪个函数

在jquery里我经常看到有人两种都用

jsa.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();
}
【热门文章】
【热门文章】