[解決済み] jQuery onclick が動的に挿入された HTML 要素で発火しない?重複
2022-01-31 02:47:25
質問
onclick イベントが動作します。 しかし、そのonclickイベントが動的なHTMLにある場合、動作しなくなりました。何も起こらないというように。
$(document).ready(function () {
$("#guestlist .viewguestdetails").click(function () {
$(".guestdetails[data-id='18']").toggle();
});
});
そして、このHTMLを動的にページに追加しています。
<div id="guestlist">
<span class="completeguestdetails" data-id="18">(add your data)</span>
<div class="guestdetails" data-id="18" style="display: none;">
some data
</div>
</div>
しかし、次に "(add your data)"をクリックしても何も起こりません。私のページに静的なHTMLがある場合、'guestdetails' divのこのトグルは動作します。 動的に挿入されたHTMLに付随するイベントはないようですね。
UPDATEしてください。
新しいダイナミックHTMLは、既存のテーブルの1行に挿入しているんだ。他の行にはすでにonclickイベントが添付されている、みたいな。
$("span.guestattendance").click(function () {
if ($(this).hasClass('checkbox-on')) {
$(this).removeClass('checkbox-on').addClass('checkbox-off');
$("#guestday").removeClass('checkbox-on').addClass('checkbox-off');
}
else {
$(this).removeClass('checkbox-off').addClass('checkbox-on');
if ($("#guestceremony").hasClass('checkbox-on') && $("#guestreception").hasClass('checkbox-on') &&
$("#guestdiner").hasClass('checkbox-on') && $("#guestparty").hasClass('checkbox-on')) {
$("#guestday").removeClass('checkbox-off').addClass('checkbox-on');
}
}
});
ユーザーは1行以上挿入できるので、idを使わず、挿入する要素の周りにラッパーを追加しました。
で、ready()関数の中で
$('.newrow_wrapper').on('click', 'span', function () {
$(".guestdetails[data-id='" + $(this).attr('data-id') + "']").toggle();
});
しかし、最初の問題は、div を tr タグで囲むと、挿入された HTML から tr と td のタグがすべて削除されてしまうことです! また、spanをクリックしてguestdetailsを表示させても何も起こりません。
どうすればいいですか?
こうしてください。
$( '#wrapper' ).on( 'click', 'a', function () { ... });
ここで、#wrapper は動的なリンクを追加する静的な要素です。
つまり、HTMLのソースコードにハードコードされたラッパーがあるわけです。
<div id="wrapper"></div>
を作成し、それを動的なコンテンツで満たします。このアイデアは、動的要素に直接ハンドラをバインドするのではなく、ラッパーにイベントを委譲することです。
関連
-
[解決済み】「Missing required request header」を修正する方法。origin,x-requested-withのいずれかを指定する必要があります' Ajax Error
-
[解決済み] 無効な JSON プリミティブ ERROR
-
[解決済み] jQueryでdiv内のspanにテキストを追加する
-
[解決済み] jQuery slidetoggleが動作しない?[クローズド]
-
[解決済み] jQuery の jquery-1.10.2.min.map が 404 (Not Found) を誘発する。
-
[解決済み] jQuery Mobileのボタンを無効にする
-
[解決済み] HTMLのinputboxでjQueryを使って数字(0-9)だけを許可する方法は?
-
[解決済み] 動的に生成された要素にイベントバインディングを行うか?
-
[解決済み] javascript(またはjQuery)を使って::beforeや::afterなどのCSS疑似要素を選択し、操作する。
-
[解決済み] ブートストラップ・モーダルにデータを渡す
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】JSONパースエラー シンタックスエラー 予期せぬ入力の終了
-
[解決済み】BootstrapがUncaught Errorを投げる。BootstrapのJavaScriptはjQueryを必要とする【解決済み
-
[解決済み] jqueryで日付を比較する
-
[解決済み] JQueryの使用 - フォームが送信されないようにする
-
[解決済み] AJAXを同期させる(SJAX)にはどうすればよいか
-
[解決済み] BootstrapがUncaught Errorを投げる:BootstrapのJavaScriptはjQueryを必要とする【終了】。
-
[解決済み] Contact Form 7 のフォームで AJAX を有効にする(AJAX ロード後)。
-
[解決済み] .animateをループさせる方法 JQuery
-
[解決済み] jQuery resizableを画像と結合する方法は?
-
[解決済み] 動的に生成された要素にイベントバインディングを行うか?