从jQuery click事件返回false
我有像这样设置的点击事件:
$('.dialogLink') .click(function () { dialog(this); return false; });
所有人都有“回报虚假”
有人可以解释这是什么,如果需要?
当您从事件处理程序返回false
,会阻止该事件的默认操作,并停止通过DOM向上冒泡的事件。 也就是说,这是这样做的等价物:
$('.dialogLink') .click(function (event) { dialog(this); event.preventDefault(); event.stopPropagation(); });
如果'.dialogLink'
是一个<a>
元素,那么点击它的默认动作是导航到href
。 从点击处理程序返回false
可以防止这一点。
至于是否需要你的情况下,我猜想答案是肯定的,因为你想显示一个对话框响应点击,而不是导航。 如果放置点击处理程序的元素在点击时没有默认操作(例如,当您单击div时通常没有任何反应),那么不需要返回false,因为没有什么可以取消。
如果你想做点什么来响应点击,但是让默认导航继续,那么不要返回false。
进一步阅读:
- event.preventDefault()
- event.stopPropagation()
事件处理程序的返回值确定是否也应该发生默认的浏览器行为。 在点击链接的情况下,这将在链接之后,但是在表单提交处理程序中,差异最为明显,如果用户input信息时出现错误,您可以取消表单提交。
我不相信这是一个W3C规范。 所有这样的古老的JavaScript接口都被赋予了昵称“DOM 0”,并且大部分都是未指定的。 阅读旧的Netscape 2文档可能会有一些运气。
实现这种效果的现代方法是调用event.preventDefault()
,这在DOM 2 Events规范中指定。
所以正确的方法是:
$('.dialogLink') .click(function (e) { dialog(this); e.preventDefault(); e.stopPropagation(); // Stop bubbling up });
事件处理程序的返回值确定是否也应该发生默认的浏览器行为。 在点击链接的情况下,这将是链接之后,但是在表单提交处理程序中差异最明显,如果用户input信息时出现错误,您可以取消表单提交。