web-dev-qa-db-fra.com

Vérifiez si tous les éléments enfants sont masqués

Je suis un peu coincé ici avec mon script:

C'est une case à cocher filtrant tout .notme images et masquer ses éléments de liste. Le problème est maintenant que je ne peux pas obtenir une fonction de rappel fonctionnelle pour le fadeToggle. Il devrait se comporter comme ceci:

Si tous les enfants de #list-team-single-container sont "affichés aucun" - faites quelque chose.

$('#show-only-my-teams').change(function(){
    $('.notme').each(function(){
        $(this).parent().parent().fadeToggle('fast', function(){
        });
    });
}); 
27
ggzone
if($('#list-team-single-container').children(':visible').length == 0) {
   // action when all are hidden
}
67
thecodeparadox

Le :visible Le sélecteur jQuery est peut-être ce que vous cherchez ...

De la description

Les éléments sont considérés comme visibles s'ils consomment de l'espace dans le document. Les éléments visibles ont une largeur ou une hauteur supérieure à zéro.

Les éléments avec visibilité: caché ou opacité: 0 sont considérés comme visibles, car ils consomment toujours de l'espace dans la mise en page. Lors des animations qui masquent un élément, l'élément est considéré comme visible jusqu'à la fin de l'animation. Lors des animations pour montrer un élément, l'élément est considéré comme visible au début de l'animation.

http://api.jquery.com/visible-selector/


$('#list-team-single-container').children(':visible');

Cette ligne de code renverra tous les éléments enfants de #list-team-single-container visibles.

$('#list-team-single-container').children(':visible').length;

Cette ligne de code renverra le nombre d'éléments enfants de #list-team-single-container visibles.

10
Lix

Il est difficile d'être précis sans voir votre balisage, mais j'imagine faire quelque chose comme ça:

var isVisible = 0;

$('.notme').each( function() {
    if( $(this).is(":visible") {
         isVisible++;
    }
});

if ( isVisible == 0 )
    // do something
9
rgin