在 jQuery 函数中,什么时候应该使用 return false?

37

我找到了很多像这个函数的东西:

$(function() {
    $("body a").click(function() {
        alert(this.innerHTML);
        return false;
    });
});

this$(this)在jquery中有什么区别?

它们都有一行代码return false; - 我不知道何时应该在jquery函数中使用return false,也不知道它的用途是什么?

3个回答

66
根据jQuery事件:停止(误)使用return false(存档链接)的介绍,调用返回false时会执行三个任务:

  1. event.preventDefault();
  2. event.stopPropagation();
  3. 当被调用时停止回调函数的执行并立即返回。

只需使用 preventDefault() 就可以取消默认行为。但是,使用 return false; 可能会导致代码脆弱。通常您只需要这样做:

$("a").on( 'click', function (e) {
    // e == our event data
    e.preventDefault();
});

第二点是在JavaScript中,"this"是一个DOM元素,而"$(this)"是一个jQuery元素,引用了这个DOM元素。有关此主题的更多信息,请阅读jQuery's this: demystified


1
将原始页面归档,因为它当前似乎无响应:http://web.archive.org/web/20160603125641/http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/ - PF4Public

11

您正在单击锚点,其默认行为是导航到某个位置。返回false可能是为了防止导航并使用户保持在当前页面/视图。


4
在点击事件处理程序的范围内,this 是未封装的 DOM 元素。 $(this) 封装它并返回一个 jQuery 元素。常见做法是将其封装一次,并在作用域内作为 that 或者通常是 $this(在变量名前加上 $ 是一种约定,表示一个 jQuery 元素)。
因此,您的示例可以写成:
$(function() {
    $("body a").click(function() {
        var $this = $(this);
        alert($this.html());
        return false;
    });
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接