2012-08-27 112 views
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> 
+0

請發佈錯誤消息。 –

+0

「按鈕」後面的換行符是個問題。 – Flash

+0

沒有錯誤信息。代碼中不存在換行符。我把它放在這裏的帖子中以便於查看。 – jason328

回答

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(); 
    }); 
}); 
+0

謝謝。這適用於我! – jason328

1

當你追加到列表中,你給每個按鈕相同的id。如果DOM中有多個元素具有相同的id,那麼您的點擊處理程序將會破壞id

嘗試:

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

和:

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

此外,你最好希望address不包含可以interpretted爲任何HTML代碼討厭。你應該逃避它。

0

怎麼樣努力

綁定( '點擊',函數(){})

,而不是當前.click(function() {....

由於這些元素是自動生成的,通過一些jQuery代碼

希望這可以幫助