2009-09-30 9 views
10

J'ai un certain nombre d'éléments sur ma page qui appartiennent à des classes avec des identifiants uniques, en fonction de ma programmation backend. Une telle que je donne les résultats suivants:jQuery: compte les occurrences uniques de la classe

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

Est-il possible que je peux compter les occurrences uniques de ces classnames avec jQuery, de sorte que quelle que soit la fonction ferait ce serait revenir 3?

+5

Oui: 'fonction countUnique (élément) {return 3}' –

+0

Non sérieusement, comment avez-vous 3 comme une réponse à compter de cet exemple? J'aurais deviné que vous attendiez 2 car il y a 2 de chaque classe présente. –

+0

Je veux compter la présence des noms de classes uniques, dont il existe trois ("element-1", "element-2", "element-3"), et non le nombre d'éléments appartenant à chaque classe. – neezer

Répondre

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

Génial, merci! – neezer

+0

J'ai lu la documentation jQuery, je n'arrive toujours pas à comprendre pourquoi cela fonctionne? – MeLight

+1

Peut être fait en 1 ligne 'alert ($ (" element [class^= élément] "). Length);' – XIMRX

56

la réponse est beaucoup plus simple: $("element.element-1").length;

+1

Vous devriez avoir celui-ci comme réponse correcte :-) –

Questions connexes