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

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

jsa.click(function () {
    event.stopPropagation()
    return false;
});

是因为兼容性考虑吗?我只是想阻止后面的事件继续运行,到底该用哪种

阅读 9.1k
2 个回答

preventDefault, stopPropogation, return false 对比

方法 事件冒泡 默认事件
return false 不冒泡 不执行
preventDefault() 冒泡 不执行
stopPropogation() 不冒泡 执行

也就是说:

function() {
  return false;
}

// 相当于    
function(e) {
  e.preventDefault();
  e.stopPropagation();
}

一般情况下使用在jquery中使用return false,既阻止了默认事件也阻止了冒泡事件

实际上如果a标签的href=“javascript:void(0)”的时候,

在IE6以上的浏览器中增加click事件是不用使用return false的

但是在IE6中,会导致链接失效,因为在click事件执行后执行了默认事件javascript:void(0)

所以这个时候很多人写成return false, 这个基本是暴力解决方案

当然使用preventDefault()就可以解决问题了。

我想代码中使用stopPropagation(),可能是他没有弄明白到底是什么原因导致的链接失效吧

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题