2009-09-30 6 views
10

Tengo una serie de elementos en mi página que pertenecen a clases con identificadores únicos, basados ​​en mi programación de back-end. De tal manera que es posible que tenga los siguientes:jQuery: cuente las ocurrencias únicas de la clase

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

¿Hay alguna manera de contar las apariciones únicas de estos nombres de las clases con jQuery, por lo que cualquiera que sea la función que haría sería volver 3?

+5

Sí: 'función COUNTUNIQUE (elemento) {return 3}' –

+0

No, en serio, ¿cómo has 3 como respuesta a contar ese ejemplo? Hubiera supuesto que esperabas 2 ya que hay 2 de cada clase presente. –

+0

Quiero contar la presencia de los nombres únicos de clase, de los cuales hay tres ("elemento-1", "elemento-2", "elemento-3"), no cuántos elementos pertenecen a cada clase. – neezer

Respuesta

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

¡Increíble, gracias! – neezer

+0

He leído la documentación de jQuery, todavía no puedo entender por qué funciona? – MeLight

+1

Se puede hacer en 1 línea 'alerta ($ (" elemento [clase^= elemento] ")) longitud);' – XIMRX

56

la respuesta es mucho más simple: $("element.element-1").length;

+1

Debe tener esta como la respuesta correcta :-) –

Cuestiones relacionadas