我想知道使用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时,正确方式或必需是否已被修改?
提前感谢您的回答。
答案 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
变量的作用域中执行。
但也许主要是:
addEventListener
,attachEvent
。)选择你自己。 : - )
答案 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 false
或return true
或return 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?