2011-02-02 5 views
8

Potrebbe essere una domanda per principianti. Ho una riga di codice come questa:Ricevi la prima e l'ultima lezione con jQuery

<div class="template active"> 

Ho bisogno di ottenere ogni classe per sé.

Ho provato questo codice:

$(this).attr("class"); 

Da quel codice ottengo "modello attivo". Quello di cui ho bisogno è una stringa con "template" e un'altra con "active".

Qual è la migliore funzione jQuery per questo? Esempio?

+3

tr y this ... $ (this) .attr ("class"). split (""); – Vivek

+0

Molti lo hanno suggerito e funziona. Grazie, vota. –

risposta

14
var classes = $(this).attr("class").split(/\s/); 

classes[0] === 'template' 
classes[1] === 'active' 

Se ci sono più di due classnames e si desidera solo per ottenere la prima & ultima (che era la tua domanda) è possibile chiamare:

classes[0] = first class 
classes[classes.length -1] = last class 
+0

Qual è la differenza tra .split (/ \ s /) e solo .split ("")? –

+2

@Jens: '/ \ s /' corrisponde a tutti i possibili caratteri spazio-spazio, non solo lo spazio. – jAndy

5

È possibile utilizzare il metodo Javascript split():

var classes = $(this).attr("class").split(" "); 
1

Se si sta verificando se un elemento HTML ha una classe, è possibile utilizzare .hasClass ('classname') che restituisce true o false.

Altrimenti, se stai cercando di visualizzare un elenco, penso che avrai diviso la stringa in un array. Le altre due risposte che sono state appena pubblicate ti mostreranno come. :)

+0

Ho provato hasClass ma non ha funzionato nel mio caso. Funziona bene in altri casi. Ti do comunque un voto. –

0
var class= $(this).attr("class").split(" ") 
(for i in class) 
{ alert(class[i])} 
0

Penso che il this sia il modo semplice.

$(".element").last().addClass("highlight"); 
+1

Penso che aggiungerebbe una classe di "highlight" all'ultimo elemento. Il poster originale sembra voler accedere all'ultimo nome della classe, piuttosto che all'ultimo elemento. – Squig

7
var class= $(this).attr("class").split(" ").pop(); 
0

È possibile farlo in questo modo anche con map: -

var ArrayData = $.map($(this).attr("class").split(' '), function(value){ 
    return value; 
}); 

alert("first class = '"+ArrayData[0]+"'"); 
alert("last class = '"+ArrayData[ArrayData.length - 1]+"'"); 

consultare LIVE DEMO

0

è possibile utilizzare: ultima

$(".element:last") 
Problemi correlati