動的に後から追加した要素(リスト)に対してのクリックイベント(JavaScript)

動的に後から追加した要素(リスト)に対して、クリックイベントを発生させる方法を書きます。

jQueryを利用したコードになります。

以下、HTML。

<ul id="addlist"></ul>

以下、JavaScript。

$(function(){
    $('#addlist').on('click', 'li', function () {
        alert($(this).text() + ', ' + $(this).attr("data-list"));
    });
    
    $('#addlist').empty();
    var cnt = 3;
    for (var i = 0; i < cnt; ++i) {
        $('<li>').text('list' + i).attr('data-list', 'data' + i).prependTo('#addlist');
    }
});

実際の動きは、jsdo.itで見ることができます。

jsdo.it – 動的に後から追加した要素(リスト)に対してのクリックイベント

間違えて、

$(‘#addlist li’).on(‘click’, function () {

のようにしてしまうことがありますが、これは既に生成されているli要素のみにイベントハンドラを登録します。

それを

$(‘#addlist’).on(‘click’, ‘li’, function () {

とすることで、新しく生成されたli要素にもイベントハンドラを適用できます。

コメント

タイトルとURLをコピーしました