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