2011-09-13 21 views
44

Biorąc pod uwagę coś takiego;jQuery liczba liczba div z pewną klasą?

<div class="wrapper"> 
    <div class="item"></div> 
    <div class="item"></div> 
    <div class="item"></div> 
    <div class="item"></div> 
    <div class="item"></div> 
</div> 

Jak chciałbym, używając jQuery (lub zwykły JS, jeśli jest krótszy - ale wątpię) policzyć div z klasą „Artykuł”? W tym przykładzie funkcja powinna zwrócić 5, ponieważ klasa item zawiera 5 elementów div.

Dzięki!

+4

try $ ("div.item") Długość lub $ ("div.item"), wielkość() –

+0

to powinno pomóc. [Link] [1] [1] : http://stackoverflow.com/questions/2727303/jquery-counting-elements-by-class-what-is-the-best-way-to-implement- ten – Darvex

+0

Rozmiar() jest przestarzałe trzymać się na długości – lft93ryt

Odpowiedz

94

Można użyć jquery .length własność

var numItems = $('.item').length; 
+7

.. .Myślę, że powinno to być $ ("div.item"), aby policzyć divy z tą klasą (i nie zawierają żadnego innego rodzaju elementu z klasą .item). – jjmontes

+0

Dzięki, to jest to, czego potrzebowałem! Przyjmuję twoją odpowiedź, gdy tylko minie limit czasu! –

+2

@jjmontes to prawda. Oczywiście możesz użyć dowolnego selektora ... ale to zależy od tego, jak konkretnie OP chce zdobyć. Na przykład '$ (div.wrapper div.item ')' byłoby jeszcze bliżej. –

17

Dla lepszej wydajności należy użyć:

var numItems = $('div.item').length; 

Ponieważ będzie wyglądać tylko dla div elementów DOM i będzie szybki.

sugestie: pomocą size() zamiast length właściwość oznacza jeden dodatkowy etap przetwarzania, ponieważ SIZE() wykorzystuje length właściwości w definicji funkcji i zwraca wynik.

+0

Chciałbym wiedzieć, jaka byłaby różnica czasu/wydajności używania 'div.item' zamiast' .item', oczywiście zależałoby to od tego, jak duży jest dokument, ale ogólnie rzecz biorąc jestem ciekawy wiedzieć, czy ma to duże znaczenie – haakym

2

Właśnie stworzył tę funkcję js użyciu funkcji rozmiarze jQuery http://api.jquery.com/size/

function classCount(name){ 
    alert($('.'+name).size()) 
} 

ostrzega ją, ile razy występuje nazwa klasy w dokumencie.

8

Można użyć właściwości jQuery.children.

var numItems = $('.wrapper').children('div').length; 

Więcej informacji można znaleźć http://api.jquery.com/

1

i dla Plain js odpowiedź jeśli ktoś może być zainteresowany;

var count = document.getElementByClassName("item"); 

Pozdrawiam. .