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

Mat*_*zen 15 jquery

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

编辑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>
Run Code Online (Sandbox Code Playgroud)

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

Phi*_*ert 24

 $("body > *").not("body > #elementtokeep").remove();
Run Code Online (Sandbox Code Playgroud)

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


PiT*_*ber 5

你可以这样做:

$('body > *:not(#dondelete)').remove();
Run Code Online (Sandbox Code Playgroud)

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


Col*_*der 5

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

更好用:

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

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