2010-07-01 14 views

Antwort

58

Sie haben die li-Elemente zu zählen, nicht die ul-Elemente:

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

Wenn Sie jedes UL Element benötigen mindestens zwei LI-Elemente enthält, verwenden Sie die Filterfunktion:

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

Sie können das auch in Ihrer Bedingung verwenden:

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

oder

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

Sie können einige Beispiele für die .Size() -Methode here finden.

+3

arbeiten ** Nur zur weiteren ... ** Die '.Size()' Methode ist veraltet ab jQuery 1.8. Verwenden Sie stattdessen die Eigenschaft '.length'. [veraltet-1.8] (http://api.jquery.com/category/deprecated/deprecated-1.8/) – gmo

17

Die korrekte Syntax ist

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

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

Sowohl .size() und .length zurück Anzahl der Artikel. Die Methode size() ist jedoch veraltet (JQ 1.8). .length-Eigenschaft kann anstelle von size() verwendet werden.

auch können Sie verwenden

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

Working jsFiddle

Bitte benutzen Sie .Size() -Funktion statt .length und auch li-Tag in Selektor angeben.

Ändern Sie Ihren Code wie.

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

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

.Size() statt .length auch