[解決済み] $(document).on('click', '#id', function() {}) vs $('#id').on('click', function(){}) [閉店].
2023-06-09 21:28:39
質問
とは何が違うのかを調べようとしていました。
$(document).on('click', '#id', function(){});
と
$('#id').on('click', function(){});
この2つの間に何か違いがあるのか、あるとすればその違いは何なのか、といった情報を見つけることができませんでした。
どなたか、違いがあるのかどうか、説明していただけませんか?
どのように解決するのですか?
最初の例では
イベントデレゲーション
. イベントハンドラは、DOM ツリーの上位にある要素 (この例では
document
) に束縛され、セレクタにマッチする要素から発生したイベントがその要素に到達したときに実行されます。
これは、ほとんどの DOM イベント
バブル
を起点としてツリーを上昇するためです。もしあなたが
#id
要素をクリックすると、クリックイベントが生成され、すべての祖先要素 (
注: 実際には、この前に「キャプチャフェーズ」と呼ばれるフェーズがあり、イベントがツリーを下ってターゲット
). これらの祖先のいずれでもイベントを捕捉することができます。
2 番目の例では、イベントハンドラを要素に直接結びつけています。イベントはまだバブルしますが (ハンドラでそれを阻止しない限り)、ハンドラがターゲットにバインドされているため、この処理の効果は見えません。
イベントハンドラを委譲することで、バインド時に DOM に存在しなかった要素に対して確実に実行されるようにすることができます。もし、あなたの
#id
要素が 2 番目の例の後に作成された場合、ハンドラは決して実行されません。実行時に DOM 内に確実に存在する要素にバインドすることで、ハンドラが実際に何かにアタッチされ、後で適切に実行されることを保証します。
関連
-
[解決済み] jQueryのディファレンシャルとプロミス - .then() vs .done()
-
[解決済み] 要素外でのクリックを検出するにはどうすればよいですか?
-
[解決済み] event.preventDefault() vs. return false
-
[解決済み] jQueryの「exists」関数はありますか?
-
[解決済み] jQueryを使用しない$(document).ready相当
-
[解決済み] セレクトボックスのオプションをすべて削除してから、オプションを1つ追加して、jQueryで選択するにはどうすればよいですか?
-
[解決済み] jQuery データ属性の値に基づいて要素を検索する方法は?
-
[解決済み] jQueryイベントKeypress。どのキーが押されたか?
-
[解決済み】jQuery:keyPress Backspaceが発射されない?
-
[解決済み] jQueryで選択されたオプションのインデックスを取得する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] クラスメソッド内の "this "をタイプスクリプトで記述する
-
[解決済み] JavaScript - 二重引用符のエスケープ
-
[解決済み] ユーザーがEnterキーを押してフォームを送信できないようにする
-
[解決済み] jQuery.ajaxでmultipart/formdataを送信する。
-
[解決済み] jQuery UI DatePicker - 日付フォーマットの変更
-
[解決済み] jQuery: テーブルの行数を数える
-
[解決済み] jQueryを使用してテキストボックスの値を取得するには?
-
[解決済み】jQueryで入力不可属性をトグルする。
-
[解決済み】jQuery:keyPress Backspaceが発射されない?
-
[解決済み] jQueryで選択されたオプションのインデックスを取得する