2012-06-29 10 views
17

Come trovare l'ultima classe sull'elemento senza conoscere il numero esatto di classi?jQuery - trova l'ultima classe sull'elemento

Il nostro elemento:

<div class="class-1 class-2 some-other-class"></div> 

approccio normale con split non funziona qui, come non si sa il numero di classi. Possiamo controllare la lunghezza dello .split(' ')?

var i = $('div').prop('class'); 
var j = i.split(' ')[x]; 

Qualsiasi suggerimento molto apprezzato.

+3

Se si vuole fare in una riga, allora 'i.split ('') [i.split ('') .length - 1]' ti darà l'ultima lezione. –

+0

Le classi sono entità essenzialmente non ordinate. Personalmente, non vorrei affidarmi a javascript/jQuery per fornire il risultato "corretto". Se avessi bisogno di conoscere l'ultima classe aggiunta a un elemento (o un insieme di elementi), ne terrei traccia in altri modi. –

risposta

38

La soluzione più semplice è utilizzare pop, che accede all'ultimo elemento dell'array.

var lastClass = $('div').attr('class').split(' ').pop(); 

noti che pop rimuove anche l'elemento dalla matrice, ma dal momento che non si sta facendo qualsiasi altra cosa con esso, che non è un problema.

+0

Ottima soluzione! – Iladarsda

14
var classStr = $('div').attr('class'), 
    lastClass = classStr.substr(classStr.lastIndexOf(' ') + 1); 

DEMO

Come classStr contiene i nomi delle classi separate da un singolo space, così lastIndexOf(' ') troverà l'ultimo space e fare partizione da lì e vi darò l'ultimo class nome.