所以我只是用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