2011-09-13 16 views
44

Considerando qualcosa del genere;jQuery numero di conteggi di div con una determinata classe?

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

Come potrei, utilizzando jQuery (o semplice JS, se è più breve - ma ne dubito) contare il numero di div con la "voce" di classe? In questo esempio, la funzione dovrebbe restituire 5, in quanto vi sono 5 div con la classe articolo.

Grazie!

+4

prova $ ("div.item") lunghezza o $ ("div.item") size() –

+0

questo dovrebbe aiutare:. [Link] [1] [1] : http://stackoverflow.com/questions/2727303/jquery-counting-elements-by-class-what-is-the-best-way-to-implement-this – Darvex

+0

size() è obsoleto stick alla lunghezza – lft93ryt

risposta

94

È possibile utilizzare la jquery .length proprietà

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

.. . Penso che dovrebbe essere $ ('div.item') per contare i div con quella classe (e non includere nessun altro tipo di elemento con la classe .item). – jjmontes

+0

Grazie, questo è quello di cui avevo bisogno! Accetterò la tua risposta non appena il tempo limite sarà finito! –

+2

@jjmontes è vero. Ovviamente puoi usare qualsiasi selettore ... ma dipende da come l'OP vuole ottenere. Ad esempio '$ ('div.wrapper div.item')' sarebbe ancora più vicino. –

17

Per ottenere migliori prestazioni si consiglia di utilizzare:

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

Dal momento che cercherà solo per gli elementi in divDOM e sarà veloce.

Suggerimento: usando size() invece di length proprietà significa un passo in più nella lavorazione dal SIZE() utilizza length proprietà nella definizione della funzione e restituisce il risultato.

+0

Sarei interessato a sapere quale sarebbe la differenza di tempo/prestazioni nell'uso di 'div.item' invece di' .item', naturalmente questo dipenderebbe dall'ampiezza del documento, ma in generale sono curioso per sapere se fa una grande differenza – haakym

2

Ho appena creato questa funzione js utilizzando la funzione di dimensioni jQuery http://api.jquery.com/size/

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

Si avvisa il numero di volte che il nome della classe si verifica nel documento.

8

È possibile utilizzare la proprietà jQuery.children.

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

Per ulteriori informazioni, fare riferimento http://api.jquery.com/

1

E per risposta la pianura js se qualcuno potrebbe essere interessato;

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

Cheers. .

Problemi correlati