如何使用jquery隐藏除一个元素之外的所有元素?

时间:2009-10-08 02:37:01

标签: jquery

我有HTML页面:

<head></head>
<body>
  <div>
    <div>
      <div id="myDiv">
      </div>
    </div>
  </div>
</body>

如何隐藏所有div,并使用jquery将myDiv放在体内?

更新

该页面可能包含一些其他html元素,例如一些表格,锚点,p,我只想查看myDiv元素。

4 个答案:

答案 0 :(得分:74)

这应该有效:

$('div:not(#myDiv)').hide();  // hide everything that isn't #myDiv
$('#myDiv').appendTo('body');  // move #myDiv up to the body

<强>更新

如果你想隐藏一切,而不仅仅是div元素,请改用:

$('body > :not(#myDiv)').hide(); //hide all nodes directly under the body
$('#myDiv').appendTo('body');

可能更简单的是将页面的整个“可隐藏”部分包装在一个大容器元素中,然后直接隐藏它。

像这样:

 <body>
     <div id="contents">
        <!-- a lot of other stuff here -->
        <div id="myDiv>
        </div>
     </div>
 </body>

然后你就可以做到这一点,这更清洁,更快:

$('#contents').hide();
$('#myDiv').appendTo('body');

答案 1 :(得分:34)

一个很好的通用方法:

$('#the_id').siblings().hide()
$('#the_id').parents().siblings().hide()

适用于任何元素类型。

答案 2 :(得分:7)

如果你的目标只是看到那些内容而没有看到任何其他东西,你可以随时做到这一点。你不需要jQuery:

document.body.innerHTML=document.getElementById('myDiv').innerHTML;

答案 3 :(得分:1)

$("div").each(function () { $(this).toggle(!!this.id); });

请注意,这将显式 show #myDiv。如果你只想隐藏其他div:

$("div:not(#myDiv)").show();

然后你可以这样做:

$("#myDiv").appendTo("body");