2010-04-21 14 views

risposta

11

Avrete bisogno di utilizzare la funzione di jQuery filter :

$('#nav > li').filter(function() { return !($(this).children().is('.active')); }) 
+0

Questo è ancora meglio della tua prima soluzione. Penso che dovresti tenerlo in giro come alternativa. O c'era un problema con esso? – user113716

+0

No, questo sembra funzionare a intermittenza. Sto tornando alla risposta precedente. –

+0

Ciò restituirà gli elementi li che non sono attivi, non credo che controllerà i figli degli elementi li per la classe attiva. –

0

Per questo jquery ha il selettore not

si può fare qualcosa di simile

$("#nav > li").children(":not(.active)"); 
+0

Questo non è quello che Trevor sta cercando. Vuole ** figli di #nav, che non hanno bambini immediati con una classe 'attiva' **. – user113716

+0

ha mancato uno dei bambini lì, ha risolto quello. –

+0

Gli elementi che desidera selezionare sono gli elementi li. Il tuo selezionatore avrebbe restituito i loro figli. –

1

davvero come la soluzione di Ken, ma solo per un approccio alternativo.

È possibile aggiungere la classe attiva agli elementi dell'elenco anziché ai collegamenti interni. Allora la vostra selettore potrebbe assomigliare:

$("ul#nav li:not(.active)"); 

Se si desidera per lo stile dei collegamenti in base alla classe di attivi, il CSS potrebbe essere la seguente:

#nav li.active a{background-color:red;} 
+1

Perché questa risposta è stata downvotata due volte? Se non è corretto, quale parte non funziona e come posso migliorarla? – Jon

+0

Questa risposta non è corretta perché restituisce i figli di 'li'. Trevor vuole gli stessi elementi 'li'. Rileggere la domanda – user113716

+0

Grazie! Ho perso quella parte, cambierò la mia risposta per riflettere questo. – Jon

19

Ecco come si fa:

$('#nav > li:not(:has(a.active))') 
+1

Bam, funziona. – mtone

+1

Cheers, non so perché la risposta accettata sia un filtro complesso ... – regisbsb

Problemi correlati