如何使用“return false;”在Javascript(或jQuery)中

时间:2018-04-11 12:15:25

标签: javascript jquery

我想知道使用return false;是因为......

⋅有时候我会看到这样的功能:

function foo(){
  ⋅⋅⋅
  return false;
}

⋅有时我看到调用这样的函数:

<div onclick="foo(); return false;"></div>

⋅有时候我会看到上面的

⋅有时候我会看到上面的 none

(我知道主题What's the effect of adding 'return false' to a click event listener?,但这似乎只回答了我的观点#2,或者我错了?)

所以我最后得到了关于它的问题 使用return false;正确方法是什么? 什么时候必要这样做?

使用jQuery时,正确方式必需是否已被修改?

提前感谢您的回答。

3 个答案:

答案 0 :(得分:2)

在旧式onxyz - 属性事件处理程序(通常称为“DOM 0”,因为它们未指定)中,返回false会阻止默认操作(this question中的更多内容)。例如,对于链接,它会阻止链接;对于表单onsubmit,它会阻止表单提交。

因此,您的“正确方法是什么”问题有多个答案:

  • 如果您希望函数foo确定是否发生默认操作,请使用onclick="return foo()"并让foo返回false以防止默认操作或返回其他任何内容(或仅return;,将有效返回undefined)以允许它。

  • 如果总是希望阻止默认值,请使用onclick="foo(); return false;"(尽管如果foo抛出异常,则无法阻止默认值。)

  • 在任何模糊现代的rowser上,如果你总是希望即使foo引发异常也会阻止默认:onclick="event.preventDefault(); foo();"(是的,这甚至适用于Firefox,它没有全局event变量 - 因为onxyz处理程序在具有本地event变量的作用域中执行。

但也许主要是:

  • 旧式“DOM 0”处理程序通常不是最佳实践;相反,如果您需要支持过时的IE版本,请使用现代事件处理(addEventListenerattachEvent。)

选择你自己。 : - )

答案 1 :(得分:1)

首先,我不建议使用内联JavaScript。

您应该使用addEventListener

示例:

document.getElementById('yourdiv').addEventListener('click', function(){
  foo(); 
  return false;
});

OR

document.getElementById('yourdiv').addEventListener('click', function(){
  foo(); 
});

function foo() { return false }

取决于您的需求

第一种情况:

function foo() {
  return false;
}

调用函数foo,这个函数返回false。所以你可以通过这样做得到错误:

var isitfalse = foo() - &gt; isitfalse将定义为false

OR

if (!isitfalse) {
   alert('Yes it\'s false')
} 

第二种情况:

<div onclick="foo(); return false;"></div>

操作onclick将调用foo函数,然后onclick将调用return false。所以它与第一种情况不同,它是你的函数返回false

<强>的jQuery

return falsereturn truereturn what-ever-you-want在jQuery中的工作方式相同,使用它的方式相同

要知道的其他事项:

如果您要求某个函数返回任何内容,该函数将不再进一步。

function foo() {

  if (2 > 1) { return something }

  alert()

}

在这种情况下,您永远不会看到警报

答案 2 :(得分:-1)

没有显式返回值的函数将始终返回undefined。 如果是事件处理程序,则返回false以避免默认的浏览器行为。见What's the effect of adding 'return false' to a click event listener?