次のようにクリックイベントを設定しました:
$('.dialogLink')
.click(function () {
dialog(this);
return false;
});
すべてに「falseを返す」があります
誰かがこれが何をするのか、そしてそれが必要かどうかを説明できますか?
次のようにクリックイベントを設定しました:
$('.dialogLink')
.click(function () {
dialog(this);
return false;
});
すべてに「falseを返す」があります
誰かがこれが何をするのか、そしてそれが必要かどうかを説明できますか?
イベント ハンドラーから戻るfalse
と、そのイベントの既定のアクションが防止され、DOM を介したイベントのバブルが停止します。つまり、これは次のことと同じです。
$('.dialogLink')
.click(function (event) {
dialog(this);
event.preventDefault();
event.stopPropagation();
});
'.dialogLink'
が要素の場合<a>
、クリック時のデフォルト アクションは に移動することhref
です。クリック ハンドラーから戻るfalse
と、それを防ぐことができます。
あなたの場合に必要かどうかについては、ナビゲートするのではなく、クリックに応答してダイアログを表示したいので、答えはイエスだと思います。クリック ハンドラーを配置した要素にクリック時の既定のアクションがない場合 (たとえば、div をクリックしても通常は何も起こらない場合)、キャンセルするものがないため、false を返す必要はありません。
クリックに応答して何かを行いたいが、デフォルトのナビゲーションを続行したい場合は、false を返さないでください。
参考文献:
イベント ハンドラーの戻り値によって、ブラウザーの既定の動作も実行する必要があるかどうかが決まります。リンクをクリックする場合、これはリンクをたどることになりますが、ユーザーが情報の入力を間違えた場合にフォーム送信をキャンセルできるフォーム送信ハンドラーでは、違いが最も顕著です。
これに関する W3C 仕様があるとは思えません。このような古い JavaScript インターフェースはすべて「DOM 0」というニックネームが付けられており、ほとんどが特定されていません。古い Netscape 2 のドキュメントを読むと運がいいかもしれません。
この効果を実現する最新の方法は を呼び出すことevent.preventDefault()
であり、これはDOM 2 Events 仕様で指定されています。
したがって、正しい方法は次のようになります。
$('.dialogLink')
.click(function (e) {
dialog(this);
e.preventDefault();
e.stopPropagation(); // Stop bubbling up
});