2012-04-30 19 views
23

versteckt Ich bin ein bisschen hier mit meinem Skript stecken:Überprüfen Sie, ob alle Kinder Elemente

Es ist ein Kontrollkästchen Filtern aller .notme Bilder und versteckt es Listenelemente ist. Das Problem ist jetzt kann ich nicht eine funktionierende Callback-Funktion für die fadeToggle bekommen. Es sollte wie folgt verhalten:

Wenn alle Kinder #list-team-single-container „none angezeigt“ sind - etwas tun.

$('#show-only-my-teams').change(function(){ 
    $('.notme').each(function(){ 
     $(this).parent().parent().fadeToggle('fast', function(){ 
     }); 
    }); 
}); 
+1

was ist Ihr Markup wie? – rgin

+0

Jede Markierung, wie bei Kindern? –

Antwort

53
if($('#list-team-single-container').children(':visible').length == 0) { 
    // action when all are hidden 
} 
+0

Plus eins, aber ich würde empfehlen mit '===' über '=='. – Sablefoste

+1

Beachten Sie: sichtbar bedeutet, dass es Platz auf der Seite belegt. Wenn es in versteckten Elementen verschachtelt ist und nicht angezeigt wird, wird es nicht als sichtbar angesehen. Wenn Sie sicherstellen wollen, dass es nicht "display: none" ist, reicht das möglicherweise nicht aus. – Rikaelus

+0

Super arbeitete wie ein Charme! –

10

Die :visible jQuery-Selektor könnte sein, was Sie für ...

Aus den description

Elemente betrachtet werden sichtbar, wenn sie in dem Dokument verbrauchen Raum suchen. Sichtbare Elemente haben eine Breite oder Höhe, die größer als Null ist.

Elemente mit Sichtbarkeit: ausgeblendet oder Opazität: 0 werden als sichtbar betrachtet, da sie immer noch Platz im Layout verbrauchen. Während Animationen, die ein Element ausblenden, wird das Element als bis zum Ende der Animation sichtbar betrachtet. Während Animationen, um ein Element anzuzeigen, wird das Element als am Anfang bei der Animation sichtbar betrachtet.

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


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

Diese Zeile Code wird alle untergeordneten Elemente von #list-team-single-container zurück, die sichtbar sind.

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

Diese Codezeile wird die Anzahl der untergeordneten Elemente von #list-team-single-container zurück, die sichtbar sind.

+1

danke für die Beschreibung – ggzone

9

Es ist schwierig, genau zu sein, ohne Ihr Markup zu sehen, aber ich kann mir vorstellen, so etwas wie dies zu tun:

var isVisible = 0; 

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

if (isVisible == 0) 
    // do something 
+0

Sie könnten Ihr Beispiel umgestalten ... 'error' ist nicht wirklich der richtige Weg, um diese Variable darzustellen ...' visibleItems' vielleicht ... Es ist etwas verwirrend, den Variablennamen 'error' zu geben. Tatsächlich tritt kein Fehler auf ... – Lix

+0

Wahr, aber in meinen Augen ist es ein Fehler in der Logik, die ich erschaffen habe, sichtbar zu sein statt versteckt zu sein. Also, ich habe Fehler gemacht. =) – rgin

+1

Ah! Da gehst du - in ** deiner Meinung - was ist mit anderen, die kommen, um deinen Code zu lesen?Fall in Punkt: P – Lix

Verwandte Themen