2010-04-21 14 views
15

Sto usando $(). FadeOut() per dissolvenza elementi in un elenco (< li> </li>). Quando l'elenco è vuoto desidero nascondere un oggetto padre.JQuery - Come faccio a contare il numero di elementi selezionati da un selettore?

Ho intenzione di farlo controllando il mio evento trigger che sfuma l'elenco se il conteggio degli oggetti è 0, quindi nasconde l'elemento genitore. Posso usare il callback fadeOut per rimuovere gli elementi, se necessario.

La domanda del punto: Come si selezionano i tag li all'interno di un ul e quindi si ottiene il conteggio totale di essi utilizzando jquery?

risposta

27

Ti piace questa:

$('ul > li').length 

un modo più elegante per farlo sarebbe quello di scrivere

$('ul:empty').fadeOut(); 

Se il ul non è vuoto, il selettore non corrisponde nulla, e la codice non farà nulla.

Potrebbe essere necessario scrivere

$('.SomeContainer:has(ul:empty)').fadeOut(); 
+2

+1 per il: vuoto – meo

+1

Grazie che è molto più elegante. –

5

Basta utilizzare .length contro la raccolta jQuery.

var $elements = $('ul#myUlElement').children('li'); 
alert($elements.length) 
+0

C'è qualche motivo per cui si dovrebbe usare '$ ('# myUlElement ul'). Bambini ('li')' invece di '$ ('# ul> myUlElement li')'? –

11

uso .length

$('ul li').length // gives you back all li's in your ul 
$('ul > li').length // give just the first children li's 

così, al fine di nascondere il proprio genitore si può usare in questo modo:

elements = $('ul > li') 

if (elements.length) { 
    elements.fadeOut() 
}else{ 
    elements.parent().fadeOut() 
} 
Problemi correlati