2010-02-05 6 views
1

Je voudrais montrer et masquer les divs qui sont juste sous la balise body, pas celles qui sont sous une autre balise div. Par exemple dans le code ci-dessous je voudrais cacher avec jquery div1 et div2, mais pas div1A, div1B, div2A et div2B. Je sais que si je cache div1 alors div1A et div1B seront cachés.afficher/masquer les divs de premier niveau avec jquery

<body> 
    <div id="div1"> 
     <div id="div1A"></div> 
     <div id="div1B"></div> 
    </div> 
    <div id="div2"> 
     <div id="div2A"></div> 
     <div id="div2B"></div>  
    </div> 
</body> 

J'ai besoin de ça parce que si je fais $ ("div"). Hide(); et ensuite $ ("div1"). show(); div1A et div1B sont toujours cachés car $ ("div"). hide(); les cacher, mais $ ("div1"). show(); ne les affecte pas.

J'ai essayé avec $ ("body div"). Hide(); mais cela a eu le même effet que $ ("div"). hide();

J'ai besoin d'un appel jquery qui ne cache que div1 et div2. Est-il possible de le faire sans avoir à définir un nom de classe?

Merci.

Répondre

11

C'est un emploi pour le sélecteur enfant immédiat: >

$('body > div').hide(); 
+0

Pour toute personne qui trouve plus tard, voici la meilleure ressource de sélection pour des questions comme celle-ci: http://api.jquery.com/category/selectors/ –

2

Essayez cette ...

$("body > div").hide(); 

Le « > » force la sélection d'arrêter à seulement les enfants div directs de l'étiquette du corps et ne pas plonger dans le DOM pour sélectionner tous les éléments div.

2

$('body > div').hide(); est la voie à suivre comme d'autres l'ont déjà signalé, mais je voulais juste souligner que l'utilisation de la méthode children() fonctionnerait également, comme qui sélectionne les enfants immédiats d'un élément:

$('body').children('div');