2010-04-21 11 views
15

Używam $(). FadeOut() do zanikania elementów na liście (< li> </li>). Gdy lista jest pusta, chcę ukryć obiekt nadrzędny.JQuery - Jak policzyć liczbę elementów wybranych przez selektor?

Mam zamiar to zrobić, zaznaczając moje zdarzenie wyzwalacza, które znika z listy, jeśli liczba obiektów wynosi 0, a następnie ukrywa element nadrzędny. Mogę użyć wywołania zwrotnego fadeOut, aby usunąć elementy, jeśli to konieczne.

Pytanie do pytania: Jak wybrać znaczniki li wewnątrz ul, a następnie uzyskać całkowitą liczbę z nich za pomocą jquery?

Odpowiedz

27

Jak to:

$('ul > li').length 

bardziej elegancki sposób to zrobić byłoby napisać

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

Jeśli ul nie jest pusta, selektor nie będzie pasował do niczego, a kod nic nie da.

Może trzeba napisać

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

+1 dla: pusty – meo

+1

Dziękuję, że jest o wiele bardziej elegancki. –

5

Wystarczy użyć .length przeciwko kolekcji jQuery.

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

Czy istnieje powód, dla którego użyłbyś '$ ('ul # myUlElement'). Children ('li')' zamiast '$ ('ul # myUlElement> li')'? –

11

użycie .length

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

tak, aby ukryć swój nadrzędny można używać go w ten sposób:

elements = $('ul > li') 

if (elements.length) { 
    elements.fadeOut() 
}else{ 
    elements.parent().fadeOut() 
} 
Powiązane problemy