2009-10-13 13 views

Respuesta

24

Eso es complicado, pero como se ha dicho es otras maneras que tienen solución. El más fácil es:

$("#adminMenu li ul:visible").hide(); 

asumiendo que los elementos están ocultos o no. Por supuesto, teniendo en cuenta que desea ocultar a todos ¿por qué no:

$("#adminMenu li ul").hide(); 

tratar de evitar el cambio de estilo CSS directamente. Es problemático Es difícil revertirlo y, como está descubriendo, es difícil buscarlo. Utilizar una clase en su lugar:

#adminMenu li ul { display: none; } 
ul.block { display: block; } 

con:

$("#adminMenu li ul").removeClass("block"); 

o

$("#adminMenu li ul.block").removeClass("block"); 
0
$('#adminMenu li').find("ul:visible").css('display', 'none'); 

o

$('#adminMenu li').find("ul:visible").hide(); 

o

$('#adminMenu li ul:visible').hide(); 

por nombrar algunas de las formas

0

Usted baremo utiliza el fadeOut() o slideUp() métodos para un efecto visual:

jQuery('#adminMenu li').find("ul").fadeOut('fast'); 

jQuery('#adminMenu li').find("ul").slideUp('fast'); 
0
$('#adminMenu li ul').hide(); 
+0

que tienen la cita equivocada al final;) ​​ –

+0

Gracias, pero creo que tengo la respuesta equivocada, es más ésta: http: // stackoverflow.com/questions/1562634/need-to-use-jquery-find-to-find-element-with-specific-style/1562680 # 1562680 – powtac

0

No sabe cómo hacerlo en una sola línea, pero aquí es cómo puede hacerlo en un par más:

jQuery('#adminMenu li').find("ul").each(function(){ 
    if($(this).css("display") == "block"){ 
    // do something 
    } 
}); 

Si lo que quiere es manejar todos los elementos visibles (en lugar de sólo los display: block las), puede probar el selector :visible en su lugar.

19

Usted puede ser capaz de utilizar los selectores de atributos, y el 'contiene' opción

$('#adminMenu li ul[style*="display:block"]').hide() 

Esto esencialmente dice 'cualquier ul que es atributo de estilo contiene la indicación de texto: Bloque'

+0

Para mí (en jQuery-1.9.0) esto da 'Error de sintaxis, expresión no reconocida : ul [style * = display: block] ' –

+0

Editado para incluir las comillas que faltan –

+1

Esta es una buena idea para usar ese selector de comodines. Me pregunto si es más rápido que las otras sugerencias. OP: es posible que desee considerar un objetivo más amplio sin embargo. Por ejemplo, si hubiera, por alguna razón, un espacio perfectamente válido entre 'display: block' esto no funcionaría. Pero esto sería '[style * =" block "]' suponiendo que no es demasiado amplio para su propósito. – dhaupin

Cuestiones relacionadas