2010-04-21 7 views
15

Ich verwende $(). FadeOut(), um Elemente in einer Liste auszublenden (< li> </li>). Wenn die Liste leer ist, möchte ich ein Elternobjekt ausblenden.JQuery - Wie zähle ich die Anzahl der von einem Selektor ausgewählten Elemente?

Ich plane dies, indem ich mein Triggerereignis einchecke, das die Liste verbläßt, wenn die Anzahl der Objekte 0 ist, und dann das Elternelement ausblenden. Ich kann den fadeOut-Rückruf verwenden, um die Elemente bei Bedarf zu entfernen.

Die auf den Punkt Frage: Wie wähle ich li-Tags in einem ul und dann die Gesamtzahl von ihnen mit Jquery bekommen?

Antwort

27

So:

$('ul > li').length 

Eine elegantere Art und Weise, es zu tun würde

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

Wenn die ul nicht leer ist, zu schreiben sein, wird der Wähler nicht alles akzeptiert, und die Code wird nichts tun.

Sie müssen möglicherweise

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

+1 für die: leer – meo

+1

Danke, dass viel mehr ist elegant. –

5

einfach .length gegen die Sammlung jQuery schreiben.

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

Gibt es einen Grund, warum Sie '$ ('ul # myUlElement'). Children ('li')' anstelle von '$ ('ul # myUlElement> li')'? –

11

Verwendung .length

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

so um Ihre Eltern verstecken Sie es auf diese Weise verwenden können:

elements = $('ul > li') 

if (elements.length) { 
    elements.fadeOut() 
}else{ 
    elements.parent().fadeOut() 
} 
Verwandte Themen