有没有办法清空div只留下具有特定类名的元素?或者,有没有办法删除div中的所有元素,只留下具有指定类的元素?
答案 0 :(得分:41)
这应该可以解决问题:
$('#theDiv').find('*').not('.className').remove();
示例标记:
<div id="theDiv">
<p>this will be removed</p>
<p class="className">this will stay</p>
</div>
答案 1 :(得分:6)
这是另一个仅使用jQuery选择器的选项:
$("#theDiv *:not('.className')").remove();
像这样的方法和上述方法的问题是,如果有任何子元素,它们也将被删除,例如:
<div id="theDiv">
<p>this will be removed</p>
<p class="className"><strong>this will also be removed :(</strong></p>
</div>
这也将被删除:(文本也将被删除,因为它与通配符*匹配,并且没有类 className 。为了解决我们希望只筛选父项的直接子项,例如:
$("#theDiv > *:not('.className')").remove();
答案 2 :(得分:1)
@ Marve的方式可能更好,但无论如何这是另一个(使用filter):
$("#yourDiv").html($('#yourDiv').filter('.IWantThisClass, .IWantThisToo').html());
答案 3 :(得分:1)
试试这个
$('#theDiv').find('*:not(".className")').remove();