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

(これが基本的に行うことです)を設定display: noneすると、親がまだ非表示になっているため、への2番目の呼び出しはほとんど無関係になります()。document.body.hide()#showbody

特定のノードを除いてすべての要素を選択し、それらを非表示にする必要があります。

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

#showは内側にあるためbody、表示されません。
bodyドキュメントの本文を定義し、すべての要素が含まれているため、非表示にするとすべての要素が非表示になります。
隠したい要素だけを非表示にしてください。

于 2012-07-24T19:21:46.310 に答える
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の例

これにより、ボディのすべての子が非表示になり、IDを持つ要素が表示されますshow

于 2012-07-24T19:23:01.177 に答える
1
$('body').find('*').not('#show, #show > *').hide();
于 2012-07-25T14:20:25.953 に答える
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

体全体ではなく、他の要素を非表示にします。

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