按类名删除父div – jquery

我有一个删除链接,将删除我页面上的当前评论。 它使用ajax来更改数据库,并且在成功时,我想删除注释所在的div。页面上的每个注释都如下所示:

Posted by xxx at xxx - comment text here

一旦它恢复成功,我无法弄清楚如何删除div。 我试过了

 $(this).parent().remove(); 

没有运气 $(this)引用锚标记,因此锚的parent()应该是

对吗?

在你的Ajax回调中, this并不是指锚元素,但即使它确实如此, .parent()方法.parent()返回直接父元素,即span元素,而不是div。

假设你有一个锚的引用,你可以说:

  $theAnchor.parent().parent().remove(); // get a's parent's parent 

…但当然这有点脆弱,因为如果您以后更改html结构,则必须将代码更改为。 因此最好使用.closest()将树搜索到匹配的最近的祖先元素:

 $theAnchor.closest("div").remove(); 

您没有显示您的点击处理程序,但它必须是这样的:

 $(".aComment a").click(function() { // keep a reference to the clicked a element for use // in the ajax callback var $theAnchor = $(this); $.ajax(/* your ajax parameters here */, function() { $theAnchor.closest("div").remove(); }); }); 

使用closest()

 $(this).closest(".aComment").remove(); 

例子 。

标签的父级是span 。 您要删除的div是该span的父级。

使用它的原因很简单,因为它比使用parent()两次更方便。

它应该是

 $(this).parent().parent().remove(); 

最好通过在代码中为注释设置ID来解决这个问题。

例如:

 

然后将此ID与您的AJAX请求和响应一起使用。

多一点工作,但它更强大(IMO)

如果您尝试在点击时删除它:

 $(".aComment a").on('click', function(){ $(this).closest(".aComment").remove(); }); 

http://jsfiddle.net/gaQuu/