web-dev-qa-db-ja.com

jquery関数でreturn falseを使用する必要があるのはいつですか?

このような機能がたくさん見つかりました。

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

Jqueryのthis$(this)の違いは何ですか?

それらにはすべて_return false;_という行があります-jquery関数で_return false_をいつ使用する必要があるかわかりません。

34
zhuanzhou

jQuery Events:Stop(Mis)Using Return False (アーカイブされたリンク)によると、falseを返すと、呼び出されたときに3つのタスクが実行されます。

  1. event.preventDefault();
  2. event.stopPropagation();
  3. コールバックの実行を停止し、呼び出されるとすぐに戻ります。

デフォルトの動作をキャンセルするために必要なアクションは、preventDefault()のみです。 return false;を発行すると、脆弱なコードが作成される可能性があります。通常、これだけが必要です:

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

次に、「this」はJavaScriptのDOM要素であり、「$(this)」はDOM要素を参照するjQuery要素です。 jQueryのthis:demystified でトピックの詳細を読んでください。

61
gruntled

デフォルトの動作はどこかに移動することであるアンカーをクリックしています。 falseを返すことは、ナビゲーションを妨げ、ユーザーを現在のページ/ビューにとどめようとする試みです。

9
Kon

クリックハンドラーのスコープでは、thisはラップされていないDOM要素です。 $(this)はそれをラップしてjQuery要素を返します。これを一度ラップして、スコープ内でthat、または多くの場合$this(変数名に$を付けることは、jQuery要素を示すための規則です)。

したがって、あなたの例は

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