2009-09-30 7 views
10

У меня есть ряд элементов на моей странице, которые относятся к классам с уникальными идентификаторами на основе моего программного обеспечения. Такое, что я, возможно, следующее:jQuery: подсчет уникальных вхождений класса

<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> 

Есть ли способ, что я могу рассчитывать уникальные вхождения этих названий класса с JQuery, так что все, что функция будет делать, что бы вернуть 3?

+5

Да: 'функция COUNTUNIQUE (элемент) {возвращение 3}' –

+0

Нет серьезно, как не вы получаете 3 в качестве ответа на этот пример подсчета? Я бы догадался, что вы ожидали 2, так как есть 2 каждого класса. –

+0

Я хочу подсчитать наличие уникальных имен классов, из которых три («element-1», «element-2», «element-3»), а не сколько элементов принадлежит каждому классу. – neezer

ответ

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

Удивительный, спасибо! – neezer

+0

Я читал документацию jQuery, все еще не могу понять, почему это работает? – MeLight

+1

Может быть сделано в 1 строке 'alert ($ (" element [class^= element] "). Length);' – XIMRX

56

ответ гораздо проще: $("element.element-1").length;

+1

У вас должен быть этот правильный ответ :-) –