我正在尝试删除整个身体中的所有内容,除了单个元素及其子元素。我怎么能做到这一点?
修改1 请考虑以下标记:
<html>
<body>
<div id="div1"></div>
<div id="div2">
<div id="elementNotToRemove"></div>
</div>
<div id="div3"></div>
<div id="div4"></div>
</body>
</html>
在上面的示例中,我想删除div1,div3和div4以及它们的子节点,但是保留div2,因为它包含不要删除的元素。
答案 0 :(得分:23)
$("body > *").not("body > #elementtokeep").remove();
您可以将not()部分替换为您要保留的内容
答案 1 :(得分:5)
你可以这样做:
$('body > *:not(#dondelete)').remove();
你的元素有id="dondelete"
并且是身体的孩子。
答案 2 :(得分:5)
这是一个老问题,但接受的答案是错误的。它在这种情况下不起作用(见http://jsfiddle.net/LVb3V/),当然不是一般解决方案。
最好使用:
$('body *').not('#div2, #div2 *').remove();
除了div2及其包含的所有元素之外,这将删除正文中的所有元素。
答案 3 :(得分:1)
答案 4 :(得分:0)
我认为
$("body *").not("body #div2")
.not("body #div2 #elementtokeep")
.not("body #div2 #elementtokeep *")
.remove();
是最简单的关注方式。
答案 5 :(得分:0)
这段代码对我有用。
$('body > * :not(#123)').remove()
你需要在*和:之间给出空格。之前尝试使用
代码时 $('body > *:not(#123)').remove()
它不起作用。我必须在*和:character之间留出空格。
快乐的编码。