当我想阻止其他事件处理程序在触发某个事件后执行时,我可以使用以下两种技术之一。我将在示例中使用jQuery,但这也适用于普通JS:

1.event.prpreventDefault()

$('a').click(function (e) {
    // custom handling here
    e.preventDefault();
});

2.返回false

$('a').click(function () {
    // custom handling here
    return false;
});

这两种停止事件传播的方法之间有什么显著的区别吗?

对我来说,返回false;与执行方法相比,它更简单、更短,并且可能更不容易出错。使用该方法,您必须记住正确的大小写、括号等。

此外,我必须在回调中定义第一个参数才能调用该方法。也许,我应该避免这样做,而是使用preventDefault,这是有原因的吗?更好的方法是什么?


当前回答

基本上,通过这种方式,您可以将事情组合起来,因为jQuery是一个主要关注HTML元素的框架,您基本上可以防止出现默认情况,但同时,您也可以停止传播以产生气泡。

所以我们可以简单地说,jQuery中的return false等于:

return false为e.preventDefault AND e.stopPropagation

但也不要忘了这一切都在jQuery或DOM相关函数中,当您在元素上运行它时,基本上,它会阻止所有的触发,包括默认行为和事件传播。

基本上在开始使用return false之前;,首先了解e.preventDefault();和e.停止传播();如果你认为你同时需要这两者,那就用它吧。

所以基本上这段代码如下:

$('div').click(function () {
  return false;
});

等于此代码:

$('div').click(function (event) {
  event.preventDefault();
  event.stopPropagation();
});

其他回答

基本上,通过这种方式,您可以将事情组合起来,因为jQuery是一个主要关注HTML元素的框架,您基本上可以防止出现默认情况,但同时,您也可以停止传播以产生气泡。

所以我们可以简单地说,jQuery中的return false等于:

return false为e.preventDefault AND e.stopPropagation

但也不要忘了这一切都在jQuery或DOM相关函数中,当您在元素上运行它时,基本上,它会阻止所有的触发,包括默认行为和事件传播。

基本上在开始使用return false之前;,首先了解e.preventDefault();和e.停止传播();如果你认为你同时需要这两者,那就用它吧。

所以基本上这段代码如下:

$('div').click(function () {
  return false;
});

等于此代码:

$('div').click(function (event) {
  event.preventDefault();
  event.stopPropagation();
});

我想

event.prpreventDefault()

是w3c指定的取消事件的方式。

您可以在W3C事件取消规范中阅读此内容。

此外,不能在任何情况下都使用return false。当在href属性中提供javascript函数时,如果返回false,则用户将被重定向到一个写有false字符串的页面。

我认为最好的方法是使用event.prpreventDefault(),因为如果在处理程序中引发了一些异常,那么将跳过return false语句,并且行为将与您想要的相反。

但是如果您确定代码不会触发任何异常,那么您可以使用任何您希望的方法。

如果您仍然希望返回false,那么可以将整个处理程序代码放在try-catch块中,如下所示:

$('a').click(function (e) {
  try{
      your code here.........
  }
   catch(e){}
  return false;
});

根据我的经验,我认为使用

event.preventDefault() 

几乎在我们需要时停止或阻止提交事件,而不是返回falseevent.prpreventDefault()工作正常。

当使用jQuery时,return false是在调用它时执行3个单独的操作:

event.prpreventDefault();event.stopPropagation();停止回调执行并在调用时立即返回。

有关更多信息和示例,请参阅jQueryEvents:Stop(Mis)UsingReturnFalse。