jQuery関数が新しく追加されたDOM要素にバインドされない 質問する

jQuery関数が新しく追加されたDOM要素にバインドされない 質問する

ここにありますindex.html:

<head>
  <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
  <script type="text/javascript">

    $(document).ready(function() {
      $('.btn_test').click(function() { alert('test'); });
    });

    function add(){
      $('body').append('<a href=\'javascript:;\' class=\'btn_test\'>test</a>');
    }

  </script>
</head>
<body>
  <a href="javascript:;" class="btn_test">test1</a>
  <a href="javascript:;" onclick="add()">add</a>
</body>

test1リンクをクリックすると が表示されますalert('test')が、addリンクをクリックしてから をクリックしてもtest何も表示されません。

説明していただけますか?

ベストアンサー1

2011 年以降にこの質問にたどり着いたユーザーの場合、これを行うための新しい適切な方法があります。

$(document).on('click', '.btn_test', function() { alert('test'); });

これは jQuery 1.7 時点のものです。

詳細については、直接イベントと委任イベント

おすすめ記事