[解決済み】動的なhtmlを読み込んだ後にクリックイベントを追加するためのjQuery .live() vs .on() メソッド
2022-04-08 06:59:06
質問
jQuery v.1.7.1を使っていますが、.live()メソッドが非推奨のようです。
私が抱えている問題は、ある要素に html を動的に読み込む際に、次のような問題が発生することです。
$('#parent').load("http://...");
その後、クリックイベントを追加しようとすると、これらのメソッドのいずれかを使用してイベントを登録することはできません。
$('#parent').click(function() ...);
または
// according to documentation this should be used instead of .live()
$('#child').on('click', function() ...);
この機能を実現する正しい方法は何でしょうか?私の場合、.live()でしか動作しないようですが、その方法は使うべきではないでしょう。なお、#childは動的に読み込まれる要素です。
ありがとうございます。
解決方法は?
動的に読み込まれる要素に対してクリックハンドラを動作させたい場合は、(動的に読み込まれない)親オブジェクトにイベントハンドラを設定し、以下のように動的オブジェクトにマッチするセレクタを与えます。
$('#parent').on("click", "#child", function() {});
イベントハンドラは
#parent
オブジェクトで発生したクリックイベントがこのオブジェクトにバブルアップされます。
#child
を実行すると、あなたのクリックハンドラが起動します。 これは、委任型イベント処理(イベント処理が親オブジェクトに委任されること)と呼ばれます。
このようにするのは、イベントを
#parent
オブジェクトを使用する場合でも
#child
オブジェクトはまだ存在しませんが、後でそれが存在し、クリックされると、クリックイベントは、そのオブジェクトにバブルアップされます。
#parent
オブジェクトは、それが
#child
をクリックしたときのイベントハンドラがあります。
#child
を作成し、イベントを発生させます。
関連
-
[解決済み】フォームコントロールの値アクセサがない
-
[解決済み】SyntaxError: 'import' と 'export' は 'sourceType: module' とだけ表示されるかもしれない - Gulp
-
[解決済み】'useState' が定義されていない no-undef React
-
[解決済み] jQuery チェックボックスの変更とクリックイベント
-
[解決済み] jQueryの複数要素の同一クリックイベント
-
[解決済み】ページロード時にJavaScriptの関数を呼び出すにはどうすればよいですか?
-
[解決済み】jQueryで画像が読み込まれたかどうか(エラーにならないか)確認する。
-
[解決済み】JavaScriptで親の子要素を探す
-
[解決済み】Twitter Bootstrapのツールチップを動的に作成された要素に結合するにはどうすればよいですか?
-
[解決済み】JavaScriptのaddEventListenerメソッドに相当する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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] jQueryで、ユーザーがそのフィールドを編集している間、テキストフィールドの最初の文字を大文字にするにはどうすればよいですか?
-
[解決済み】jquery $.ajaxオブジェクトのresponseJSONプロパティを取得する方法 [重複]。
-
[解決済み】JavaScriptのinnerHTMLで要素が更新されない
-
[解決済み】SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
[解決済み】Redux TypeError: 未定義のプロパティ 'apply' を読み取れない
-
[解決済み】WebSocket接続に失敗しました。WebSocket のハンドシェイク中にエラーが発生しました。予期しない応答コードです。400
-
[解決済み】Jestが予期しないトークンに遭遇した
-
[解決済み】TypeError:res.jsonは関数ではありません。
-
[解決済み】未定義のプロパティ 'forEach' を読み取ることができない
-
[解決済み] 動的に生成された要素にイベントバインディングを行うか?