1

次の jquery コードに問題があります。

$(document).ready(function() {

$(".box").submit(function(e) {       
      e.preventDefault();
        var input_value = $(".textbox").val();
        $("<li>"+ input_value +" <br /> <form class='box'><input type='text' name='textbox' class='textbox reply'></form> <ul class='list'></ul></div></li>")
        .prependTo($(this).siblings('.list').first());
    });
});

既存の HTML に prependTo() するとすべて正常に動作しますが、javascript によって作成された要素に prependTo() しようとすると、エラーが発生します。

説明するために次のjsfiddleを作成しました

4

3 に答える 3

0

jQuery 1.6.4 を使用しているため、.live()を使用してイベント委任を使用します。jQuery >= 1.7 を使用している場合は、代わりに.on()を使用してください

$(document).ready(function() {

    $(".box").live('submit', function(e) {   
        e.preventDefault();
        var input_value = $(".textbox").val();
        $("<li>"+ input_value +" <br /> <form class='box'><input type='text' name='textbox' class='textbox reply'></form> <ul class='list'></ul></div></li>")
        .prependTo($(this).siblings('.list').first());
    });
});

デモ:フィドル

于 2013-05-09T04:58:58.833 に答える
0

これは、新しく作成された要素がまだ DOM にプッシュされていないためです。最初に要素を DOM にプッシュする必要があります (つまり、.html() のようなことを行うことで、要素が DOM に存在するようになります)。これを行った後prependTo()、新しく作成された要素を使用できます。

于 2013-05-09T04:59:53.117 に答える