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

Jquery empty()div,匹配元素除外,jquery,Jquery,有没有办法清空div,只留下具有特定类名的元素?或者,有没有一种方法可以删除div中的所有元素,只留下具有指定类的元素?@Marve的方法可能更好,但这里还有另一种方法(使用): 这应该可以做到: $('#theDiv').find('*').not('.className').remove(); 标记示例: <div id="theDiv"> <p>this will be removed</p> <p class="classNam

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

@Marve的方法可能更好,但这里还有另一种方法(使用):


这应该可以做到:

$('#theDiv').find('*').not('.className').remove();
标记示例:

<div id="theDiv">
    <p>this will be removed</p>
    <p class="className">this will stay</p>
</div>

这将被删除

这将持续下去

试试这个

$('#theDiv').find('*:not(".className")').remove();

以下是仅使用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>

如果Marve的答案解决了问题,你应该通过点击他答案旁边的复选标记来接受它。@Jason-我完全支持Marve的答案-但是如果两者都有效呢?他应该接受对他最有用的答案。值得注意的是,
.find('*')
将以所有子代为目标,而不管它们是否包含在
.not()
中指定的元素中。换句话说,如果您使用
.not()
指定了一个元素,并且该元素包含子元素,则它们将不受
.remove()
的约束,并且也将被删除。在这种情况下,
children()
可能比
.find('*')
更有用。谢谢。这个答案比国际海事组织公认的要好得多。这个答案太棒了。我没想过不选择!
<div id="theDiv">
    <p>this will be removed</p>
    <p class="className"><strong>this will also be removed :(</strong></p>
</div>
$("#theDiv > *:not('.className')").remove();