[解決済み] 動的に生成された要素でクリックイベントが動作しない [duplicate]
2022-03-18 21:42:44
質問
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("button").click(function() {
$("h2").html("<p class='test'>click me</p>")
});
$(".test").click(function(){
alert();
});
});
</script>
</head>
<body>
<h2></h2>
<button>generate new element</button>
</body>
</html>
というクラス名の新しいタグを生成しようとしていました。
test
の中に
<h2>
をクリックすると、そのボタンが表示されます。また、クリックイベントも定義しました。
test
. しかし、このイベントは動作しません。
どなたか助けてください。
解決方法は?
その
click()
このバインディングは、quot;direct" と呼ばれ、次の要素にのみハンドラをアタッチします。
すでに存在する
. 将来作成される要素にバインドされることはありません。そのためには、quot;delegated" バインディングを
on()
.
委譲されたイベントには、後からドキュメントに追加された子孫要素からのイベントを処理できるという利点があります。
こんな感じです。
var counter = 0;
$("button").click(function() {
$("h2").append("<p class='test'>click me " + (++counter) + "</p>")
});
// With on():
$("h2").on("click", "p.test", function(){
alert($(this).text());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<h2></h2>
<button>generate new element</button>
上記は、jQueryのバージョン1.7以上を使用している場合に動作します。古いバージョンを使用している場合は、以下の以前の回答を参照してください。
前回の回答 :
を使ってみてください。
live()
:
$("button").click(function(){
$("h2").html("<p class='test'>click me</p>")
});
$(".test").live('click', function(){
alert('you clicked me!');
});
私の場合はうまくいきました。 試してみた をjsFiddleで表示します。
あるいは、新感覚の方法として
delegate()
:
$("h2").delegate("p", "click", function(){
alert('you clicked me again!');
});
関連
-
echarts-all.js:1 Uncaught TypeError: nullのプロパティ'getAttribute'を読み取ることができません。
-
[解決済み] jest.fn()の値はモック関数またはスパイである必要があります。
-
[解決済み] Microsoft JSONの日付はどのようにフォーマットするのですか?
-
[解決済み] 動的に生成された要素にイベントバインディングを行うか?
-
[解決済み] jQuery チェックボックスの変更とクリックイベント
-
[解決済み] Google Maps APIでマウスのスクロールホイールによる拡大縮小を無効にする方法
-
[解決済み] jQueryの複数要素の同一クリックイベント
-
[解決済み] デベロッパーツールを使って、Chromeのボタンや要素で実行されるコードを調べる方法
-
[解決済み] jQueryで、ある要素を他の要素に対して相対的に配置するには?
-
[解決済み] jQueryで特定のidを持つdivが存在するかどうかを確認するにはどうすればよいですか?
最新
-
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のイベントハンドラを削除する最良の方法?
-
[解決済み] Select <a> which href ends with some string
-
[解決済み] .on('click') と .click() の違いについて
-
[解決済み] jQuery .onとhoverの使い分けは可能ですか?
-
[解決済み] jQueryで多段式フォームをリセットする
-
[解決済み] Electron: jQueryが定義されていない
-
[解決済み】フォームのhiddenフィールドにjQueryの".val() "を使って値を設定してもうまくいかない。
-
[解決済み】iPad版SafariでjQueryを使ってタッチイベントを認識させる方法は?可能でしょうか?
-
[解決済み] jQueryで<input type="text">のonchangeを実装するには?