2011-02-02 9 views
8

Może to być pytanie dla początkujących. Mam linię kodu podobną do poniższej:Zdobądź pierwszą i ostatnią klasę z jQuery

<div class="template active"> 

Muszę zdobyć każdą klasę dla siebie.

Próbowałem ten kod:

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

Od tego kodu otrzymuję "szablon aktywny". Potrzebuję tylko jednego ciągu z "szablonem" i drugiego z "aktywnym".

Jaka jest najlepsza funkcja jQuery? Przykład?

+3

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

+0

Wiele osób sugeruje, że to działa. Dzięki, zagłosuj. –

Odpowiedz

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

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

Jeśli istnieją więcej niż dwie ClassNames i chcesz tylko zdobyć pierwszy & ostatni (który był zapytanie) można nazwać:

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

Jaka jest różnica między .split (/ \ s /) a just .split ("")? –

+2

@Jens: '/ \ s /' dopasowuje wszystkie możliwe znaki białych znaków, nie tylko spację. – jAndy

5

Można użyć metody JavaScript split():

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

Jeśli sprawdzasz, czy element HTML ma klasę, możesz użyć .hasClass ("classname"), która zwróci wartość true lub false.

W przeciwnym razie, jeśli próbujesz wyświetlić listę, myślę, że podzielisz ciąg znaków na tablicę. Pozostałe dwie odpowiedzi, które zostały właśnie opublikowane, pokażą Ci, jak to zrobić. :)

+0

Próbowałem hasClass, ale nie działa w moim przypadku. Działa dobrze w innych przypadkach. Mimo to i tak daję wam głos. –

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

Myślę, że this to prosta droga.

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

Myślę, że to dodawałoby klasę "highlight" do ostatniego elementu. Oryginalny plakat wydaje się chcieć uzyskać dostęp do ostatniej nazwy klasy, a nie ostatniego elementu. – Squig

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

Można to zrobić w ten sposób zbyt korzystając map: -

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

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

Patrz LIVE DEMO

0

można użyć: Ostatni

$(".element:last") 
Powiązane problemy