1. ホーム
  2. javascript

[解決済み] event.preventDefault() vs. return false

2022-03-15 21:47:33

質問

あるイベントが発生した後に、他のイベントハンドラが実行されないようにしたい場合、2つのテクニックのうちの1つを使用することができる。例ではjQueryを使うが、これはプレーンなJSにも適用できる。

1. event.preventDefault()

$('a').click(function (e) {
    // custom handling here
    e.preventDefault();
});

2. return false

$('a').click(function () {
    // custom handling here
    return false;
});

この2つのイベントプロパゲーションの停止方法に大きな違いはあるのでしょうか?

私の場合 return false; は、メソッドを実行するよりもシンプルで短く、おそらくエラーの可能性も低いでしょう。メソッドでは、正しいケーシングや括弧などについて覚えておく必要があります。

また、コールバックで最初のパラメータを定義しないと、メソッドを呼び出すことができません。おそらく、このような方法を避けるべき理由があるのでしょう。 preventDefault その代わりに?何かいい方法はないでしょうか?

どのように解決するのですか?

return false から をjQueryのイベントハンドラ内で使用します。 を呼び出すのと同じです。 e.preventDefaulte.stopPropagation を渡すと jQuery.Eventオブジェクト。

e.preventDefault() を指定すると、デフォルトのイベントが発生しないようになります。 e.stopPropagation() はイベントがバブリングするのを防ぎ return false はその両方を行います。この動作は 通常 (非jQuery)イベントハンドラでは、特に。 return false が行います。 ない は、イベントがバブリングアップするのを止めます。

出典 ジョン・レシグ

hrefクリックをキャンセルするために、"return false"よりも event.preventDefault() を使用することの利点は何ですか?