按类名删除父div – jquery
我有一个删除链接,将删除我页面上的当前评论。 它使用ajax来更改数据库,并且在成功时,我想删除注释所在的div。页面上的每个注释都如下所示:
一旦它恢复成功,我无法弄清楚如何删除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(); });