1

HTML

<body>
    <span>test</span>
    <span>test</span>
    <span>test</span>
    <span id="show">aaaaaa</span>
</body>

JS

$('body').hide();

$('#show').show();

为什么这不起作用?我怎样才能让它工作?

现在一切都被隐藏了,但如果我使用$('#show').show();它应该让它#show可见。这可能吗?如果是,如何?

我想隐藏所有没有#show 的元素,但我不能修改 HTML。

4

7 回答 7

4

因为#show在里面body,这是不可见的。
body定义文档的主体,它包含所有元素,所以如果你隐藏它,你将隐藏所有元素。
尝试仅隐藏您想要的元素。

于 2012-07-24T19:21:46.310 回答
4

通过设置display: none(基本上document.body就是.hide()这样做的),第二次调用#show变得几乎无关紧要,因为父级仍然隐藏(body)。

您需要选择所有元素,没有特定节点并隐藏它们。

$(document.body).contents().not('#show, #show *').hide();
于 2012-07-24T19:22:47.853 回答
3

要隐藏所有没有 的元素id="show",您可以使用以下not功能

$('body').find('*').not('#show').hide();

:not伪选择器

$('body').find(':not("#show")').hide();

编辑:要同时显示#show 的所有子项,请将其添加到 not 选择器:

$('body').find('*').not('#show, #show > *').hide();​

http://jsfiddle.net/ZD7gm/3/

于 2012-07-24T19:22:07.107 回答
2

试试这个:

$('body').contents().hide();
$('#show').show();​

jsFiddle 示例

这将隐藏 body 的所有子元素并显示带有 ID 的元素show

于 2012-07-24T19:23:01.177 回答
1

隐藏其他元素,而不是整个身体。

$('span').hide();
$('#show').show();
于 2012-07-24T19:21:50.823 回答
1

尝试在 body 标记后附加 span,如下所示。

<body>
    <span>test</span>
    <span>test</span>
    <span>test</span>
    <span id="show">aaaaaa</span>
</body>    

$('body span').hide();

$('#show').show();

jsfiddle.net 示例

于 2012-07-24T19:24:30.203 回答
1
$('body').find('*').not('#show, #show > *').hide();
于 2012-07-25T14:20:25.953 回答