昨天我用PHP,HTML和ajax编写了一个Commentbox。 ajax部分让我有机会删除评论而不刷新页面。我这样做的方式是,我通过数据库给每个评论(div)一个唯一的id。因此,让我们举例说,在我的mysql数据库中,这是注释的样子:
Username: blabla<br>
Comment: haha this is so funny<br>
id: 52
这将打印在html页面中,例如:
<div class="commentStyle" id="<?php echo $commentid; ?>">
This comment will now have the id of 52
<div class="deleteComment">Delete the comment here!</div>
</div>
然后!
来自ajax部分,编码如下:
$(document).ready(function(){
$(".deleteComment").click(function(){
//Getting the id of comment
id = $(".deleteComment").attr("id");
$.ajax{
Type: 'GET',
url: 'deletecomment.php',
data: "id=" + id,
success: function(){
$("#" + id).hide();
}
}
});
});
删除第一条评论时,此功能正常。但是,除非我刷新页面,否则我会删除其他评论。&lt;。第一条评论可以在不刷新页面的情况下完全删除,但是当我想删除其他评论时,我必须多次刷新页面。
我该如何解决这个问题?
答案 0 :(得分:0)
.deleteComment
是<div class="commentStyle"..
的孩子,因此您可以使用parent()
选择器选择它:
var id = $(this).parent().attr("id");
或更具体地说:
var id = $(this).parent('.commentStyle').attr("id");
答案 1 :(得分:0)
看起来您需要首先从父元素获取id,然后定位子元素(您单击的元素),以便在ajax请求返回成功后隐藏它的注释:
$(".deleteComment").click(function(){
var id = $(this).parent().attr("id");
var child = $(this);
$.ajax({
type: 'GET',
url: 'deletecomment.php',
data: "id=" + id,
success: function(){
child.hide();
// or if you want to delete the entire element with the id of X
// child.parent().hide();
}
});
});
答案 2 :(得分:0)
文档就绪事件中的代码仅在第一次单击时才能正常工作。为了完成这项工作,您必须在标记内注册一个on click事件。 示例:
<div class="deleteComment" onclick="DeleteMe(id)">Delete the comment here!</div>
</div>
function DeleteMe(id)
{
$.ajax{
Type: 'GET',
url: 'deletecomment.php',
data: "id=" + id,
success: function(){
$("#" + id).hide();
}
}
});
}
如果单击某个div不起作用,则可以使用锚标记(在此处删除)。
答案 3 :(得分:0)
您的代码中几乎无需进行任何更改。
首先将ID标签添加到内部div。
<div class="commentStyle" id="<?php echo $commentid; ?>">
This comment will now have the id of 52
<div class="deleteComment" id="<?php echo $commentid; ?>">Delete the comment here! </div>
</div>
其次使用 this
id = $(this).attr("id");
而不是......
id = $(".deleteComment").attr("id");
第三,改变这样的ajax调用:
$.ajax({
Type: 'GET',
url: 'deletecomment.php',
data: "id=" + id
}).done(function(){
$("#" + id).hide();
});
希望这对您有用,如果不是回复我。