2

このjQueryコードの何が問題なのかわかりません。デバッガーからエラーが発生していません。私は何が悪いのか途方に暮れています。

<ul id="list"></ul>

<script>

$(document).ready(function() {

$('#show_place_on_screen').click(function () {

var address = $('#address').val();

$("#list").append('<li>' + address + '<input type="button"   

id="delete" value="Delete"/></li>');

});

$("#delete").click(function() { 

    $(this).parent().remove();

});});

</script>
4

3 に答える 3

2

イベントを委任する必要clickがあります。また、クラスを使用することもできます。IDは一意である必要があります。

$(document).ready(function() {
    $('#show_place_on_screen').click(function() {
        var address = $('#address').val();
        $("#list").append('<li>'+address+'<input type="button" class="delete" value="Delete"/></li>');
    });

    $(document).on('click', '.delete', function() {
        $(this).parent().remove();
    });
});
于 2012-08-27T06:29:57.510 に答える
1

リストに追加すると、各ボタンに同じものが与えられますid。DOM内の複数の要素が同じidである場合、クリックハンドラーのターゲティングidはおそらく壊れます。

試す:

$("#list").append('<li>' + address + '<input type="button" class="delete" value="Delete"/></li>');

と:

$(".delete").live('click', function() { 
  $(this).parent().remove();
});

また、addressHTMLとして解釈される可能性のある厄介なコードが含まれていないことをお勧めします。あなたはおそらくそれを逃れるべきです。

于 2012-08-27T06:27:18.443 に答える
0

やってみませんか

bind('クリック'、function(){})

現在の代わりに .click(function() {....

これらの要素はいくつかのjqueryコードによって自動生成されるため

お役に立てれば

于 2012-08-27T06:31:14.790 に答える