除了匹配的元素外,Jquery为empty()div

时间:2009-08-11 21:08:18

标签: jquery

有没有办法清空div只留下具有特定类名的元素?或者,有没有办法删除div中的所有元素,只留下具有指定类的元素?

4 个答案:

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