我有一个 HTML 页面:
<head></head>
<body>
<div>
<div>
<div id="myDiv">
</div>
</div>
</div>
</body>
如何使用jquery隐藏所有的div,并只让myDiv元素显示在页面中?
更新:
页面可能包含其他html元素,例如表格、锚点、p标签,我只想看到myDiv元素。我有一个 HTML 页面:
<head></head>
<body>
<div>
<div>
<div id="myDiv">
</div>
</div>
</div>
</body>
如何使用jquery隐藏所有的div,并只让myDiv元素显示在页面中?
更新:
页面可能包含其他html元素,例如表格、锚点、p标签,我只想看到myDiv元素。$('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');
一个不错的通用方法:
$('#the_id').siblings().hide()
$('#the_id').parents().siblings().hide()
适用于任何元素类型。
#the_id
来显示它。parents()
集合包括所有祖先(向上递归)。您不能隐藏元素的父级,否则该元素本身也会被隐藏;您也不能隐藏元素的子级,否则该元素本身将没有内容(对于适用该概念的元素类型)。 - Chris Johnson.siblings().hide().parents().siblings().hide()
- stallingOne如果你的目标只是查看内容而不想看到其他任何东西,你可以这样做。你不需要使用jQuery:
document.body.innerHTML=document.getElementById('myDiv').innerHTML;
$("div").each(function () { $(this).toggle(!!this.id); });
$("div:not(#myDiv)").show();
然后你可以这样做:
$("#myDiv").appendTo("body");
$("*").hide(); $("#myDiv").show();
比$("*:not(#myDiv)")
要快得多。 - nickf$('body > :not(#myDiv)').hide()
。通常在 body 元素下直接有太多的元素。另外,正如我在答案中提到的那样,最好只是跳过这些无聊的东西,直接使用包装元素。 - TM.