2010-11-22 9 views
1

Je veux obtenir le dernier élément d'un tableau avec des noms de classe. Mon code ressemble à ceciObtenir le dernier nom de classe d'un tableau avec jquery

var getClassName = []; 
getClassName = $(this).attr('class').split(); 
console.log(getClassName); 

Dans la console i deviennent obtenir cette réponse

["classname1 classname2"] 

Comment puis-je obtenir le nom de la classe?

Merci

+4

Aucune de vos cinq autres questions n'a reçu de réponse acceptable? –

Répondre

2

Comme jensgram souligne , vous êtes presque là; voir sa réponse pour le détail si vous voulez rester spécifique à jQuery.

Mais vous faites le navigateur faire beaucoup de travail supplémentaire, c'est un de ces moments que vous avez vraiment pas besoin jQuery:

var getClassName; 
getClassName = this.className.split(' '); 
console.log(getClassName[getClassName.length-1]); 

Le className property d'éléments DOM est pris en charge par tous les principaux navigateurs (et probablement tous mineurs). Cependant, à moins que vous ne le fassiez dans une boucle serrée, la surcharge supplémentaire des appels $() et attr n'a probablement pas vraiment d'importance.

+0

Ce serait 'this.className.split ('');' mais bon point. – jensgram

+0

@jensgram: Wow, j'ai vu et réparé ça presque instantanément, parlez de timing. :-) –

+0

@ T.J. Crowder Et j'ai pris la liberté de changer mon genre :) – jensgram

4
console.log(getClassName[getClassName.length-1]); 

Will do, mais vous devez passer un argument à split():

var getClassName = $(this).attr('class').split(' '); 
var lastIndex = getClassName.length - 1; 
console.log(getClassName[lastIndex]); 

EDIT: En utilisant this.className
Pensez à utiliserau lieu de $(this).attr('class'). Ceci est mentionné dans other answers.

Andy E a fait un excellent article sur la façon dont nous avons tendance à abuser de jQuery: Utilizing the awesome power of jQuery to access properties of an element. L'article traite spécifiquement l'utilisation de .attr("id") mais le problème est le même pour $(...).attr('className') par rapport à this.className.

Vous pouvez même utiliser

var getClassName = (this.className || '').split(' '); 

si vous n'êtes pas sûr que .className existe.

+0

Pris sur ma réponse :) –

+0

Oh cool. Merci, c'est comme ça que j'ai besoin. – Peter

+0

@Peter Vous devriez vraiment suivre @ T.J. Le conseil de Crowder et l'utilisation de 'this.className' au lieu de' .attr() '. Je viens de faire ce point dans [un autre thread] (http://stackoverflow.com/questions/4243554/jquery-if-checkbox-is-checked-do-this/4243575#4243575). – jensgram

2
$(this).attr('class').split(' ').pop() 
+0

+1 ce qui m'est venu à l'esprit. – alex

Questions connexes