2012-04-30 22 views
23

estoy un poco atascado aquí con mi guión:Comprobar si los elementos de todos los niños están ocultos

Es una casilla de verificación filtrado de todos .notme imágenes y ocultar que es elementos de la lista. El problema ahora es que no puedo obtener una función de devolución de llamada que funcione para el fadeToggle. debe comportarse de esta manera:

Si todos los niños de #list-team-single-container son "aparece en pantalla ninguno" - hacer algo.

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

¿cuál es su marcado como? – rgin

+0

¿Alguna marca, como en los niños? –

Respuesta

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

Más uno, pero recomendaría usar '===' sobre '=='. – Sablefoste

+1

Tenga en cuenta que: visible significa que está ocupando espacio en la página. Si está anidado dentro de elementos ocultos y no se muestra actualmente, no se verá como: visible. Si quiere asegurarse de que no sea "display: none", esto podría no ser suficiente. – Rikaelus

+0

Awesome trabajado como un encanto! –

10

El selector de jQuery :visible podría ser lo que está buscando ...

De los description

elementos se consideran visibles si consumen espacio en el documento. Los elementos visibles tienen un ancho o una altura que es mayor que cero.

Elementos con visibilidad: oculta u opacidad: 0 se consideran visibles, ya que aún consumen espacio en el diseño. Durante las animaciones que ocultan un elemento, el elemento se considera visible hasta el final de la animación. Durante las animaciones para mostrar un elemento, el elemento es que se considera visible al inicio de la animación.

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


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

Esa línea de código devolverá todos los elementos secundarios de #list-team-single-container que son visibles.

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

Esa línea de código volverá el número de elementos secundarios de#list-team-single-container que son visibles.

+1

gracias por la descripción – ggzone

9

Es difícil ser específico sin ver su margen de beneficio, pero me imagino haciendo algo como esto:

var isVisible = 0; 

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

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

Es posible que desee refactorizar su ejemplo ... 'error' no es realmente la forma correcta de representar esa variable ...' visibleItems' tal vez ... Darle el nombre de la variable 'error' es un poco confuso. No se está produciendo ningún error ... – Lix

+0

Cierto, pero en mi opinión, ser visible en lugar de estar oculto es un error en la lógica que estaba creando. Entonces, puse error. =) – rgin

+1

¡Ah! Ahí va - en ** su ** mente - ¿qué hay de los demás que vienen a leer su código?Caso en cuestión: P – Lix

Cuestiones relacionadas