所以我只是用codeigniter製作一個小博客項目。我試圖做的是一旦添加了評論,我希望能夠刪除它。刪除評論適用於較舊的評論,但不適用於添加的較新評論。爲了將它們刪除,頁面必須刷新。我已經查看了一些在stackoverflow上的答案,但沒有一個似乎是我的問題。問題是當我點擊刪除我的新評論,它沒有註冊我甚至點擊了元素。如果你看下面,我添加了一個console.log測試,當我單擊元素時應該顯示該測試,但沒有任何反應。我將如何解決這個問題?使用Ajax添加後刪除評論
編輯:我注意到在控制檯(使用Firefox)的東西。在刪除元素附近有一個黑色的小盒子,裏面寫着「ev」。它出現在旁邊的其他評論,但不是新的評論。
編輯:好的,我應該做得更多一點挖掘,我找到了答案:
變化
$(".com-delete").click(function()
TO
$(document).on("click",".com-delete",function()
代碼:
<script>
$(document).ready(function(){
$("#comment").submit(function(event){
event.preventDefault();
var body = $("textarea#body").val();
$.ajax({
type: "POST",
url: "<?php echo base_url(); ?>" + "comments/add_comment/" + "<?php echo $post['id']; ?>",
dataType: "json",
data: {"body":body},
complete: function (xhr, status) {
if (status === 'error' || !xhr.responseText) {
console.log(status);
}
else {
var html = "<div class='well'><h5>"+body+"</h5><p><em>By:<strong><?php echo $this->session->userdata('username'); ?></strong></em><span class='com-delete' id='"+xhr.responseText+"' >remove</span></p></div>";
$("#comment").after(html);
$("#body").val("");
$("#nocomments").html("");
}
}
});
});
$(".com-delete").click(function(){
//WORKS WITH OLD COMMENTS BUT NOT WITH NEW COMMENTS
console.log("test");
var el = $(this);
var com_id=el.attr('id');
$.ajax({
type: "POST",
url: "<?php echo base_url(); ?>" + "comments/delete_comment/"+com_id,
success: function() {
el.closest("div").remove();
}
});
});
});
</script>
哈哈我剛剛發現之前你的答案發布。但感謝您的幫助 – Megan