特定のイベントが発生した後に他のイベント ハンドラーが実行されないようにしたい場合、2 つのテクニックのいずれかを使用できます。例では 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
代わりに を使用する必要がある理由がいくつかあるのでしょうか? より良い方法は何でしょうか?
ベストアンサー1
return false
jQueryイベントハンドラ内から を呼び出すことは、渡された引数に対してe.preventDefault
との両方を呼び出すのと実質的に同じです。e.stopPropagation
jQuery.Event オブジェクト。
e.preventDefault()
デフォルトのイベントの発生を防ぎ、e.stopPropagation()
イベントのバブルアップを防ぎ、return false
その両方を実行します。この動作は通常の(jQuery 以外の) イベント ハンドラーとは異なり、特にイベントのバブルアップは停止return false
しないことに注意してください。
ソース:ジョン・レシグ
href クリックをキャンセルするために、「return false」ではなく event.preventDefault() を使用する利点はありますか?