63

次のようにクリックイベントを設定しました:

$('.dialogLink')
    .click(function () {
        dialog(this);
        return false;
    });

すべてに「falseを返す」があります

誰かがこれが何をするのか、そしてそれが必要かどうかを説明できますか?

4

3 に答える 3

104

イベント ハンドラーから戻るfalseと、そのイベントの既定のアクションが防止され、DOM を介したイベントのバブルが停止します。つまり、これは次のことと同じです。

$('.dialogLink')
   .click(function (event) {
       dialog(this);
       event.preventDefault();
       event.stopPropagation();
});

'.dialogLink'が要素の場合<a>、クリック時のデフォルト アクションは に移動することhrefです。クリック ハンドラーから戻るfalseと、それを防ぐことができます。

あなたの場合に必要かどうかについては、ナビゲートするのではなく、クリックに応答してダイアログを表示したいので、答えはイエスだと思います。クリック ハンドラーを配置した要素にクリック時の既定のアクションがない場合 (たとえば、div をクリックしても通常は何も起こらない場合)、キャンセルするものがないため、false を返す必要はありません。

クリックに応答して何かを行いたいが、デフォルトのナビゲーションを続行したい場合は、false を返さないでください。

参考文献:

于 2012-06-25T06:19:48.740 に答える
6

イベント ハンドラーの戻り値によって、ブラウザーの既定の動作も実行する必要があるかどうかが決まります。リンクをクリックする場合、これはリンクをたどることになりますが、ユーザーが情報の入力を間違えた場合にフォーム送信をキャンセルできるフォーム送信ハンドラーでは、違いが最も顕著です。

これに関する W3C 仕様があるとは思えません。このような古い JavaScript インターフェースはすべて「DOM 0」というニックネームが付けられており、ほとんどが特定されていません。古い Netscape 2 のドキュメントを読むと運がいいかもしれません。

この効果を実現する最新の方法は を呼び出すことevent.preventDefault()であり、これはDOM 2 Events 仕様で指定されています。

したがって、正しい方法は次のようになります。

$('.dialogLink')
   .click(function (e) {
       dialog(this);
       e.preventDefault();
       e.stopPropagation(); // Stop bubbling up
});
于 2012-06-25T06:23:03.310 に答える