【jQuery】動的に追加した要素でイベントが発生しない!!そんな時は・・・
目次
静的要素にイベントを登録する場合
静的要素の場合、下記のようにHTMLとjQueryを記載しイベント(クリックイベント)を登録します。
HTML
<body>
<div id="elem_1">CLICK</div>
</body>
jQuery
$('#elem_1').click(function() {
// something
});
動的要素に静的要素と同様の処理でイベントを登録を行った場合
動的要素に対して、下記のようにjQueryで登録処理を行ってもイベントは発生しません。
jQuery
$('body').append('<div id="elem_2">CLICK2</div>');
$('#elem_2').click(function() {
// something
});
解決策
では、どうすればいいのかというと、下記のようにjQueryで登録処理を行った場合、イベントが発生します。
jQuery
$('body').append('<div id="elem_2">CLICK2</div>');
$(document).on('click', '#elem_2', function() {
// something
});
解説
簡潔ではありますが、解説していきます。
jQuery
イベント自体はselectorに設定されていますが、on()の第2引数にtargetを設定している為、
selector内でtargetのeventを登録するとなり、動的に追加した要素に対してもイベントが実行されるようになります。
$(selector).on(event, target, function);
- selectorのeventが発した場合
- eventの発生元がtargetであれば
- functionを実行する
まとめ
今回は動的要素へのイベント登録方法をご紹介いたしました。
私も静的要素の場合と同様のイベント登録処理を記載し、イベントが発生せず躓き、上記の解決策に辿り着きました。
現在では、静的・動的で登録処理の記載を分けず、常に動的要素の記載でプログラミングを行うように習慣づけております。
今回の記事が、みなさんの快適なプログラミングの一翼を担えれば幸いです。
「東三河・西三河で働く!」高時給な派遣求人が満載!
-
前の記事
2024年2月の学習内容 2024.03.01
-
次の記事
【Webデザイナーにコーディングスキルは必要?】身につけるメリットとは 2024.04.01