何时以及为何在JavaScript中"返回false"?

zsh*_*arp 130 javascript jquery

return false在JavaScript中何时以及为何?

Chr*_*ung 84

通常,在事件处理程序中,例如onsubmit,返回false是一种告诉事件实际上不会触发的方法.因此,在这种onsubmit情况下,这意味着表单未提交.

  • 如果你想要一个在不重新加载页面的情况下提交的AJAX表单,这一点特别好 - 但是当javascript不可用时,通过提交和重新加载页面也可以. (9认同)
  • 返回false实际上是过度杀害,以防止在创建事件处理程序时的默认操作,并且可能导致脆弱的代码.Douglas Neiner的帖子中的解释和示例http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/ (9认同)
  • 使用jQuery,最好使用```event.preventDefault()```来实现这个功能.我相信返回false是弃用的,并不再总是有效. (3认同)

mat*_*att 67

我猜你指的是你经常要把'回归假'; 事件处理程序中的语句,即

<a href="#" onclick="doSomeFunction(); return false;">...
Run Code Online (Sandbox Code Playgroud)

'回归虚假;' 在这种情况下,停止浏览器跳转到当前位置,如href ="#"所示 - 相反,只执行doSomeFunction().当您想要将事件添加到锚标记时,它非常有用,但不希望浏览器在每次单击时向上和向下跳转到每个锚点

  • @ vol7ron:替代方案是一个真正的URL,可以作为没有javascript的人的替代品.否则,他们只是点击没有发生任何事情的链接. (4认同)
  • 当然,'href ="#"'是不好的做法,但你的整体观点仍然存在:-) (3认同)
  • @ vol7ron:当然,由每个开发人员(或网站所有者)决定他们想要提供多少潜在用户群.然而,在这样的情况下,针对更多人的选项很简单,我不明白为什么你不会选择它.另外,请记住,这不仅仅是关于人们明确禁用javascript; 它可以是:其他人对他们强加了这个决定,下载JS文件的网络问题,JS的一行中的一个错误导致它全部失败.此外,如果右键单击 - >在新选项卡中打开仍然有效,这是非常好的. (3认同)

Nad*_*mli 28

它用于阻止事件传播.你看到你有两个元素都有一个单击事件处理程序(例如)

-----------------------------------
| element1                        |
|   -------------------------     |
|   |element2               |     |
|   -------------------------     |
|                                 |
-----------------------------------
Run Code Online (Sandbox Code Playgroud)

如果单击内部元素(element2),它将在两个元素中触发单击事件:1和2.它被称为"事件冒泡".如果只想处理element2中的事件,则事件处理程序必须返回false以停止事件传播.

另一个例子是链接onclick处理程序.如果要停止链接表单工作.您可以添加onclick处理程序并返回false.阻止事件传播到默认处理程序.

  • 这个答案的第一部分是错误的:从事件处理程序返回`false`将阻止与事件关联的默认操作; 你也可以通过调用`event.preventDefault()`或设置`event.returnValue = false`(IE)来做到这一点; 为了阻止事件冒泡,你必须调用`event.stopPropagation()`或设置`event.cancelBubble = true`(IE) (9认同)

Bob*_*ack 18

呃...在布尔函数中如何表示"不正确"?

  • 那么FileNotFound呢? (4认同)
  • Gleb:没有"在FileNotFound中",这是一个TDWTF的笑话:http://thedailywtf.com/Articles/What_Is_Truth_0x3f_.aspx (2认同)

fly*_*ace 9

搜索"js,何时使用'返回false'后,我也来到了这个页面.在其他搜索结果中,我发现在Chris Coyier的CSS-Tricks网站上发现了一个更有用和直接的页面:'return false;'之间的区别 和'e.preventDefault();'

他的文章的主旨是:

function(){return false; }

//等于

function(e){e.preventDefault(); e.stopPropagation(); }

虽然我仍然建议阅读整篇文章.

更新:在争论使用return false的优点之后; 作为e.preventDefault()的替代品; &e.stopPropagation(); 我的一位同事指出return false也会停止回调执行,如本文所述:jQuery Events:Stop(Mis)Using Return False.


geo*_*wa4 6

当使用jQuery的each函数时,返回true或false有意义.见文档