2009-09-30 14 views
10

Mam wiele elementów na mojej stronie, które należą do klas z unikalnymi identyfikatorami, na podstawie mojego programowania backendu. Takie, że może mam następujące:jQuery: Policz unikalne wystąpienia klasy

<element class="element-1"></element> 
<element class="element-1"></element> 
<element class="element-2"></element> 
<element class="element-2"></element> 
<element class="element-3"></element> 
<element class="element-3"></element> 

Czy istnieje sposób mogę liczyć unikalne wystąpienia tych classnames z jQuery, tak że cokolwiek zrobi, że funkcja wróci 3?

+5

Tak: 'funkcja COUNTUNIQUE (element) {return 3}' –

+0

No poważnie, jak nie masz 3 jako odpowiedź na liczenie tego przykładem? Zgadłbym, że spodziewałeś się 2, ponieważ są obecne 2 z każdej klasy. –

+0

Chcę policzyć obecność unikalnych nazw klas, z których istnieją trzy ("element-1", "element-2", "element-3"), a nie jak wiele elementów należy do każdej klasy. – neezer

Odpowiedz

5
var obj = {}; 
var num = 0; 
$("element[class^=element]").each(function() { 
    var cl = $(this).attr("class"); 
    if(!obj[cl]) { 
    obj[cl] = {}; 
    num++; 
    } 
}); 
alert(num); 
+0

Niesamowite, dzięki! – neezer

+0

Czytałem dokumentację jQuery, nadal nie mogę zrozumieć, dlaczego to działa? – MeLight

+1

Można to zrobić w 1 linii 'alert ($ (" element [klasa^= element] "). Length);' – XIMRX

56

odpowiedź jest znacznie prostsza: $("element.element-1").length;

+1

Powinieneś mieć to jako poprawną odpowiedź :-) –

Powiązane problemy