2012-04-30 15 views
23

io sono un po 'bloccato qui con il mio script:Verificare se gli elementi tutti i bambini sono nascosti

sua una casella di controllo filtrando tutte .notme immagini e nascondere è elementi della lista. Il problema ora è che non posso ottenere una funzione di callback funzionante per lo fadeToggle. Dovrebbe comportarsi in questo modo:

Se tutti i bambini di #list-team-single-container sono "none visualizzato" - fare qualcosa.

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

qual è il tuo markup come? – rgin

+0

Nessun segno di spunta, come nei bambini? –

risposta

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

Più uno, ma ti consiglio di usare '===' oltre '=='. – Sablefoste

+1

Nota che: visible significa che occupa spazio sulla pagina. Se è annidato all'interno di elementi nascosti e non è attualmente visualizzato, non sarà visto come: visibile. Se vuoi assicurarti che non sia "display: none", questo potrebbe non essere sufficiente. – Rikaelus

+0

Impressionante ha funzionato come un fascino! –

10

Il :visible selettore jQuery potrebbe essere quello che state cercando ...

Dalle description

elementi sono considerati visibile se consumano spazio nel documento. Gli elementi visibili hanno una larghezza o un'altezza maggiore di zero.

Elementi con visibilità: nascosti o opacità: 0 sono considerati visibili, poiché occupano ancora spazio nel layout. Durante le animazioni che nascondono un elemento, , l'elemento è considerato visibile fino alla fine dell'animazione. Durante le animazioni per mostrare un elemento, l'elemento è considerato visibile all'inizio dell'animazione.

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


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

Quella riga di codice restituirà tutti gli elementi figlio di #list-team-single-container che sono visibili.

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

Quella riga di codice restituirà il numero di elementi figli di#list-team-single-container che sono visibili.

+1

grazie per la descrizione – ggzone

9

E 'difficile essere precisi senza vedere il vostro codice, ma mi piacerebbe immaginare di fare qualcosa di simile:

var isVisible = 0; 

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

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

Potresti voler rifattorizzare il tuo esempio ... 'error' non è il modo giusto per rappresentare quella variabile ...' visibleItems' forse ... Dargli il nome della variabile 'error' è un po 'di confusione. Non si verifica alcun errore ... – Lix

+0

Vero, ma nella mia mente, essere visibile invece che nascosto, è un errore nella logica che stavo creando. Quindi, ho messo un errore. =) – rgin

+1

Ah! Eccoti - nella ** tua ** mente - e sugli altri che vengono a leggere il tuo codice?Caso in questione: P – Lix

Problemi correlati