从jQuery click事件返回false

时间:2012-06-25 06:19:02

标签: jquery return jquery-events

我点击事件设置如下:

$('.dialogLink')
    .click(function () {
        dialog(this);
        return false;
    });

所有人都有“返回假”

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

3 个答案:

答案 0 :(得分:90)

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

$('.dialogLink')
   .click(function (event) {
       dialog(this);
       event.preventDefault();
       event.stopPropagation();
});

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

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

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

进一步阅读:

答案 1 :(得分:4)

事件处理程序的返回值确定是否也应该发生默认浏览器行为。在单击链接的情况下,这将在链接之后,但在表单提交处理程序中最明显的区别是,如果用户输入信息时出错,您可以取消表单提交。

我不相信有W3C规范。像这样的所有古老的JavaScript接口都被赋予了昵称“DOM 0”,并且大部分未指定。阅读旧的Netscape 2文档可能会有运气。

实现此效果的现代方法是致电event.preventDefault(),这在DOM 2 Events specification中指定。

所以正确的方法是:

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

答案 2 :(得分:-1)

事件处理程序的返回值确定是否也应该发生默认浏览器行为。在单击链接的情况下,这将在链接之后,但在表单提交处理程序中最明显的区别是,如果用户输入信息时出错,您可以取消表单提交。