从jQuery click事件返回false

Ala*_*an2 56 jquery return jquery-events

我点击事件设置如下:

$('.dialogLink')
    .click(function () {
        dialog(this);
        return false;
    });
Run Code Online (Sandbox Code Playgroud)

这一切都有"回归虚假"

有人可以解释这是什么以及是否需要它?

nnn*_*nnn 94

false从事件处理程序返回时,它会阻止该事件的默认操作,并阻止事件通过DOM冒泡.也就是说,它相当于这样做:

$('.dialogLink')
   .click(function (event) {
       dialog(this);
       event.preventDefault();
       event.stopPropagation();
});
Run Code Online (Sandbox Code Playgroud)

如果'.dialogLink'是一个<a>元素,则其对click的默认操作是导航到href.false从点击处理程序返回可以防止这种情况.

至于你的情况是否需要,我猜答案是肯定的,因为你想显示一个对话框以响应点击而不是导航.如果你打开单击处理程序的元素在单击时没有默认操作(例如,通常在单击div时没有任何反应),那么你不需要返回false,因为没有什么可以取消.

如果你想做点什么来响应点击但是让默认导航继续,那么不要返回false.

进一步阅读:


Pra*_*man 5

事件处理程序的返回值决定了是否也应该发生默认浏览器行为。在点击链接的情况下,这将跟随链接,但在表单提交处理程序中差异最为明显,如果用户输入信息有误,您可以取消表单提交。

我不相信有 W3C 规范。像这样的所有古老的 JavaScript 接口都被赋予了“DOM 0”的绰号,而且大多是未指定的。您可能有幸阅读旧的 Netscape 2 文档。

实现这种效果的现代方法是调用event.preventDefault(),这在DOM 2 事件规范中指定。

所以正确的方法是:

$('.dialogLink')
   .click(function (e) {
       dialog(this);
       e.preventDefault();
       e.stopPropagation(); // Stop bubbling up
});
Run Code Online (Sandbox Code Playgroud)