jQuery – 选择除单个元素及其子元素之外的所有内容?

我试图删除整个身体中的所有东西,除了单个元素及其子元素。 我怎么能做到这一点?

编辑1考虑以下标记:

  

在上面的例子中,我想删除div1,div3和div4,以及它们的子节点,但保留div2,因为它包含不要删除的元素。

  $("body > *").not("body > #elementtokeep").remove(); 

您可以将not()部分替换为您想要保留的内容

你可以这样做:

 $('body > *:not(#dondelete)').remove(); 

你的元素有id="dondelete"并且是身体的孩子。

这是一个老问题,但接受的答案是错误的。 它在这种情况下不起作用(参见http://jsfiddle.net/LVb3V/ ),当然不是一般的解决方案。

更好用:

$('body *').not('#div2, #div2 *').remove()​;

除了div2及其包含的所有元素之外,这将删除正文中的所有元素。

尝试

 $('body > *:not(#123)').remove() 

http://api.jquery.com/not-selector/

我觉得

 $("body *").not("body #div2") .not("body #div2 #elementtokeep") .not("body #div2 #elementtokeep *") .remove(); 

是最容易集中注意力的方式。

http://jsfiddle.net/6vb2va6g/

这段代码对我有用。

 $('body > * :not(#123)').remove() 

你需要在*和:之间留出空间。 之前尝试使用代码时

$('body > *:not(#123)').remove()它不起作用。 我必须在*和:字符之间留出空格。

快乐的编码。