2010-07-01 16 views

risposta

58

Dovete contare gli elementi Li non gli elementi ul:

if ($('#menu ul li').length > 1) { 

Se avete bisogno di ogni elemento UL contenente almeno due elementi LI, utilizzare la funzione di filtro:

$('#menu ul').filter(function(){ return $(this).children("li").length > 1 }) 

Puoi anche usarlo nelle tue condizioni:

if ($('#menu ul').filter(function(){ return $(this).children("li").length > 1 }).length) { 
0
alert("Size: " + $("li").size()); 

o

alert("Size: " + $("li").length); 

Potete trovare alcuni esempi del metodo di here .size().

+3

** Solo per ulteriore riferimento ... ** Il '.size()' metodo è deprecato a partire dal jQuery 1.8. Usa invece la proprietà '.length'. [Deprecated-1.8] (http://api.jquery.com/category/deprecated/deprecated-1.8/) – gmo

17

La sintassi corretta è

$('ul#menu li').length 
7
alert("Size: " + $("li").size()); 

alert("Size: " + $("li").length); 

Sia .size() e .length numero ritorno dell'articolo. ma il metodo size() è deprecato (JQ 1.8). La proprietà .length può essere utilizzata invece di size().

inoltre è possibile utilizzare

alert($("ul").children().length); 
5

Working jsFiddle

Utilizzare .size() funzione invece di .length e anche specificare tag li nel selettore.

Cambia il tuo codice come.

if ($('#menu ul li').size() > 1) { 
4

Usa $('ul#menu').children('li').length

.size() al posto di .length funziona anche

Problemi correlati