2011-02-02 25 views
8

Puede ser una pregunta para principiantes. Tengo una línea de código así:Obtenga la primera y la última clase con jQuery

<div class="template active"> 

Necesito obtener cada clase por sí mismo.

yo probamos este código:

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

A partir de ese código me sale "plantilla activa". Lo que necesito es una cadena con "plantilla" y otra con "activa".

¿Cuál es la mejor función jQuery para eso? ¿Ejemplo?

+3

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

+0

Muchos lo han sugerido y funciona. Gracias, vota. –

Respuesta

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

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

Si hay más de dos nombres de las clases y que sólo quieren conseguir el primer & última (que era su pregunta) se puede llamar:

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

¿Cuál es la diferencia entre .split (/ \ s /) y simplemente .split ("")? –

+2

@Jens: '/ \ s /' coincide con todos los posibles caracteres de espacio en blanco, no solo el espacio. – jAndy

5

Se puede utilizar el método de Javascript split():

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

Si está comprobando si un elemento HTML tiene una clase, puede usar .hasClass ('classname') que devolverá verdadero o falso.

De lo contrario, si está intentando ver una lista, creo que habrá dividido la cadena en una matriz. Las otras dos respuestas que acabamos de publicar le mostrarán cómo hacerlo. :)

+0

Probé hasClass pero no funcionó en mi caso. Funciona bien en otros casos. Te doy un voto de todos modos. –

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

Creo que this es la manera fácil.

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

Creo que esto agregaría una clase de "resaltado" al último elemento. El póster original parece querer acceder al último nombre de clase, en lugar de al último elemento. – Squig

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

Puede hacerlo de esta manera también el uso de map: -

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

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

Consulte LIVE DEMO

0

puede utilizar: última

$(".element:last") 
Cuestiones relacionadas