"DOM生成した要素に対してクリックなどのイベントを実行する方法" の続きを読む"> "DOM生成した要素に対してクリックなどのイベントを実行する方法" の続きを読む">

芝生やDIY等のライフハックやWeb制作情報を発信するメディア

メニューを開く

DOM生成した要素に対してクリックなどのイベントを実行する方法

DOM生成した要素にイベントが実行できない

$('div.hoge').append('<ul id="hoge-01" class="list-link-01"><li><a href="#">jsでページ読み込み時にDOM生成されたリンク</a></li></ul>');
$('div.hoge ul#hoge-01 li a').click(function(){
$('div.hoge ul#hoge-01').after('<ul id="hoge-02" class="list-link-01"><li><a href="#">クリックでDOM生成されたリンク</a></li></ul>');
  return false;
});
$('div.hoge ul#hoge-02 li a').click(function(){
  alert('クリックしてもアラート表示されない');
  return false;
});
  • クリックしてDOM生成された、2つ目のリンクのclickイベントは反応しない

DOM生成した要素にイベントが実行できる

$('div.moge').append('<ul id="moge-01" class="list-link-01"><li><a href="#">jsでページ読み込み時にDOM生成されたリンク</a></li></ul>');
$('div.moge ul#moge-01 li a').click(function(){
  $('div.moge ul#moge-01').after('<ul id="moge-02" class="list-link-01"><li><a href="#">クリックでDOM生成されたリンク</a></li></ul>');
  return false;
});
$(document).on("click","div.moge ul#moge-02 li a",function(){
  alert('クリックするとアラート表示される');
  return false;
});
  • .on()メソッドの第一引数にイベント名、第二引数にセレクタを指定
  • $(document)により親要素に対するイベントハンドラを指定

DOM生成した要素にイベントが実行できる(第二引数を省略)

$('div.fuga').append('<ul id="fuga-01" class="list-link-01"><li><a href="#">jsでページ読み込み時にDOM生成されたリンク</a></li></ul>');
$('div.fuga ul#fuga-01 li a').click(function(){
  $('div.fuga ul#fuga-01').after('<ul id="fuga-02" class="list-link-01"><li><a href="#">クリックでDOM生成されたリンク</a></li></ul>');
  $('div.fuga ul#fuga-02 li a').on("click",function(){
    alert('クリックするとアラート表示される');
    return false;
  });
  return false;
});
  • 第二引数を省略してセレクタを指定
  • 最初のclick(function~内で要素追加後に2つ目のclickは.onで記述

デモの解説記事に戻る

ページの先頭に戻る