删除问题div的Jquery仍然存在

时间:2014-08-17 19:18:08

标签: javascript php jquery html ajax

昨天我用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;。第一条评论可以在不刷新页面的情况下完全删除,但是当我想删除其他评论时,我必须多次刷新页面。

我该如何解决这个问题?

4 个答案:

答案 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();
    });

希望这对您有用,如果不是回复我。