jQuery事件处理程序返回值

40

.click().change()事件处理程序中是否有返回值的用途(如return truereturn false)?


1
你是什么意思?给我们展示一个你想如何使用该结果(返回值)的例子。 - Peter Örneholm
1
只是好奇,因为有些返回 true,而其他的返回 false,我在文档中找不到任何信息。 - Buzzzz
2个回答

51
return false;将阻止事件冒泡阻止默认操作。

换句话说,返回false相当于这两行代码。

event.stopPropagation();
event.preventDefault();

至少对于可以冒泡且可取消的事件。


stopPropagation仅适用于jQuery事件处理程序(但jQuery事件处理程序是问题)。 - melutovich

23
在这样的事件处理程序中,return false 会导致 jQuery 自动调用 event.stopPropagation()event.preventDefault()(仅适用于 jQuery 事件处理程序,正如 Tim Down 在评论中建议的那样)。 return true 与返回空值相同(jQuery 不执行任何操作)。

3
在这种情况下,jQuery在这里进行了自由解释:对于非jQuery事件处理程序,return false只会阻止默认操作,而不会停止事件冒泡。 - Tim Down
@Tim Down:好的,谢谢提醒。我会把这个加到我的回答里。 - jwueller
@TimDown 为了澄清,您所说的“非jQuery事件处理程序”,是指通过其他方式附加的处理程序,而不是jQuery方法(.on或.live/.bind/.delegate),比如addEventListener吗? - Jo Liss
5
@JoLiss:在使用DOM的 addEventListener() 绑定的事件侦听器中,return false 没有任何效果。它可以用于抑制所谓的 DOM0 事件处理程序中的默认行为,例如 document.body.onclick = function() { return false; }; - Tim Down
默认情况下,一个简单的 return(没有指定返回值)或者只是“掉出函数边缘”而返回将导致函数返回 undefined。jQuery 如何对此做出反应? - zrajm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接