从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信息时出现错误,您可以取消表单提交。