1

私はこのようなコードを持っています

$(document).ready(function(){
     $(".add").bind ('click',
        function ()
        {
            $('.main').append('<div class="add">Add element 2</div>');
        });
    });
</script>

<div class="main"><div class="add">Add element</div></div>

仮想オブジェクト「.add」が「.main」に追加されると、jqueryはそれらをクリックしても反応しません

4

2 に答える 2

5

はい、新しい要素を作成する前に、アクションを既存の.add要素のみにバインドしたためです。

on関数の 2 番目のパラメーターとして指定された特定のセレクターを使用して、クリックを.main要素にバインドする必要があります。

$('.main').on('click', '.add', function (){
    $('.main').append('<div class="add">Add element 2</div>');
});

それは本当にかなり直感的です。あなたのコードでは、ページ上のすべての add 要素を見つけて、この関数をそれぞれにバインドすると言っています。したがって、後で追加されたものには、この関数がバインドされていません。

正しいコードでは、メイン要素を見つけて関数をそれにバインドすると言っていますが、クラス .add を持つ子要素がクリックされたときにのみ関数を実行します

于 2012-06-26T13:19:16.003 に答える
0

を使用せず.bind()、代わりに.on()or を使用します。1.7 より前のバージョンの jQuery を使用している場合は、.delegate().

バインドは 1 回限りのアクションであり、DOM 内の新しいアイテムをリッスンしません。

于 2012-06-26T13:18:11.077 に答える