2009-10-13 6 views

risposta

24

Questo è difficile, come indicato, ma è risolvibile altri modi. Il più semplice è:

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

supponendo che gli articoli siano nascosti o meno. Naturalmente, considerando che vuoi nasconderli tutti, perché non solo:

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

Prova ed evita di cambiare direttamente lo stile CSS. È problematico È difficile invertire e come stai scoprendo difficile da cercare. Utilizzare una classe, invece:

#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(); 

per citarne alcuni modi

0

È coud utilizzare la fadeOut() o slideUp() metodi per un effetto visivo:

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

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

voi hanno la citazione sbagliata alla fine;) –

+0

Grazie, ma penso di avere la risposta sbagliata, è più questo: http: // StackOverflow.it/questions/1562634/need-to-use-jquery-find-to-find-element-con-style-specifico/1562680 # 1562680 – powtac

0

Non so come farlo in una linea, ma ecco come si può fare in un paio di più:

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

Se quello che vuoi è quello di gestire tutti gli elementi visibili (invece dei soli display: block quelli), puoi provare invece il selettore :visible.

19

Si può essere in grado di utilizzare i selettori di attributo, e la 'contiene' opzione

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

Questo dice in sostanza 'qualsiasi ul che è attributo di stile contiene il display di testo: block'

+0

Per me (in jQuery-1.9.0) questo dà 'Errore di sintassi, espressione non riconosciuta : ul [style * = display: block] ' –

+0

Modificato per includere le virgolette mancanti –

+1

Questa è una buona idea usare questo selettore di caratteri jolly. Mi chiedo se sia più veloce degli altri suggerimenti. OP: potresti voler prendere in considerazione un obiettivo più ampio. Ad esempio, se ci fosse, per qualsiasi ragione, uno spazio perfettamente valido tra 'display: block' questo non funzionerebbe. Ma questo sarebbe '[style * =" block "]" assumendo che non sia troppo ampio per il tuo scopo. – dhaupin

Problemi correlati