派遣のお仕事情報満載!!アドバンティアで求人検索

【jQuery】動的に追加した要素でイベントが発生しない!!そんな時は・・・

YK

静的要素にイベントを登録する場合

静的要素の場合、下記のように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);
  1. selectorのeventが発した場合
  2. eventの発生元がtargetであれば
  3. functionを実行する

まとめ

今回は動的要素へのイベント登録方法をご紹介いたしました。
私も静的要素の場合と同様のイベント登録処理を記載し、イベントが発生せず躓き、上記の解決策に辿り着きました。
現在では、静的・動的で登録処理の記載を分けず、常に動的要素の記載でプログラミングを行うように習慣づけております。
今回の記事が、みなさんの快適なプログラミングの一翼を担えれば幸いです。

「東三河・西三河で働く!」高時給な派遣求人が満載!

いまあなたは転職活動で困っていませんか? 「こんなに転職活動を頑張っているのに、良い職場に出会えないのだろう?」 そんな悩みがあるなら派遣会社アドバンティアで解決しましょう! 軽作業・工場系・事務系のお仕事が満載!! 高時給!週払い可能!家電付きアパート・マンションを貸し出し♪車・携帯レンタル可能!アドバンティアは充実したサポート体制であなたのご応募をお待ちしております。 TEL面接実施中!!

>> アドバンティア求人検索はこちら <<