2010-03-09 6 views
3

J'ai plusieurs divs qui partagent une classe commune. Si l'un de ces div pas avoir un enfant div, je veux cacher la div. Je peux trouver le bon div mais je suis incapable de le cacher.Jquery - Masquer div spécifique

Ceci est mon code,

$(function() { 

     if ($(".adRight.childen('div')").length == 0) { 
      $(this).hide(); 

     } 

    }); 

Que dois-je utiliser au lieu de (ce)? cela fait référence au document et non au div l'if-statement trouvé.

Répondre

5

Vous cherchez:

$("div.adRight:not(:has(div))").hide(); 

Est-ce que la façon dont il lit.

Votre code d'origine a confondu les sélecteurs avec les fonctions (par exemple, .childen est considéré comme un sélecteur de classe), et vous montre qu'il faut en lire un peu plus avant de se tordre le code jQuery. Pardon.
Par exemple, votre instruction if recherche quelque chose que jQuery ne trouve pas (syntaxe incorrecte). jQuery renvoie une collection vide - il a pour politique de ne pas lancer d'exceptions inutiles, donc sa longueur est 0. Il ne cherche pas 0 enfants.
Notez également que pour une action simple comme hide vous n'avez pas besoin d'itérer la collection - hide fonctionnera avec les éléments que vous avez déjà trouvés, en utilisant votre sélecteur.

+0

Merci Kobi! Code très agréable et efficace. :) Ai-je bien compris, - div.adRight fait référence à tous les div avec la classe adRight? -: non et: a des vérifications si elle n'a pas de div? –

+0

Jova - correct. Les sélecteurs de jQuery sont très puissants, mais faciles à utiliser et lisibles. Vous avez juste à trouver le bon! – Kobi

0

Peut-être.

if ($ ("adRight div ") == undefined) { $ (". AdRight") cacher(); }

(~~ pas sûr)