Cet extrait bouclera tous les <div id="wrap#">
et les cacher si le test sont cachés.
$("div[id^='wrap']").each(function() {
var wrap = $(this);
if(wrap.children("div[class^='test']:visible").length == 0) {
wrap.hide();
} else {
wrap.show();
}
});
Si vous voulez garder votre <div id="wrap#">
visible s'il n'y a pas de test du tout (comme dans aucun dans le balisage), vous pouvez utiliser l'extrait modifié suivant:
$("div[id^='wrap']").each(function() {
var wrap = $(this);
if(wrap.children("div[class^='test']").length > 0 &&
wrap.children("div[class^='test']:visible").length == 0) {
wrap.hide();
} else {
wrap.show();
}
});
Il n'y a pas raison impérieuse de numéroter des classes (autres que dans les cas de bordure). Votre numérotation complique le code ci-dessus ainsi que votre CSS. Il serait plus facile de supprimer la numérotation de test
. (Vous n'avez pas besoin que vous pouvez toujours sélectionner un sous-ensemble d'entre eux en utilisant :lt(index)
, :gt(index)
, :eq(index)
, :first
et :last
.
En ce qui concerne ids de numérotation, qui est très bien puisque chaque id doit être unique.
Quelqu'un peut-il éditer le titre de la question? Je cherchais "tous les div avec la même classe", et presque passé celui-ci upvoting question – Jason