我什么时候应该在jquery函数中使用return false?

时间:2011-05-08 13:21:45

标签: javascript jquery callback return-value

我发现了很多像这样的功能:

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

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

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

3 个答案:

答案 0 :(得分:60)

根据jQuery Events: Stop (Mis)Using Return False(归档链接),返回false会在调用时执行三项任务:

  1. event.preventDefault();
  2. event.stopPropagation();
  3. 停止回调执行并在调用时立即返回。
  4. 取消默认行为所需的唯一操作是preventDefault()。发布return false;可能会产生脆弱的代码。通常你只想要这个:

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

    其次,“this”是javascript中的DOM元素,“$(this)”是jQuery元素 引用DOM元素。请阅读jQuery's this: demystified上的主题。

答案 1 :(得分:9)

您正在点击一个锚,其默认行为是在某处导航。返回false可能是阻止导航并使用户保持当前页面/视图的尝试。

答案 2 :(得分:2)

在单击处理程序的范围内,this是未包装的DOM元素。 $(this)包装它并返回一个jQuery元素。通常的做法是将其包装一次,并使其在范围内that或通常$this可用(前缀变量名称为$是表示jQuery元素的约定)。

因此,您的示例可以写成

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