2010-11-22 8 views
1

Ich möchte das letzte Element eines Arrays mit Klassennamen erhalten. Mein Code sieht wie folgt ausHolen Sie sich den letzten Klassennamen eines Arrays mit jquery

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

in der Konsole i diese Antwort erhalten werden

["classname1 classname2"] 

wie kann ich die letzte Klasse Namen?

Dank

+4

Keine Ihrer fünf anderen Fragen hat eine akzeptable Antwort erhalten? –

Antwort

2

Wie jensgram weist darauf hin, "die gesamte Zeichenfolge wird zurückgegeben" Du bist fast da. Sehen Sie seine Antwort für das Detail, wenn Sie jQuery-spezifisch bleiben wollen.

Aber Sie machen der Browser eine Menge zusätzlicher Arbeit tun, dann ist dies eine jener Zeiten, die Sie wirklich brauchen jQuery nicht:

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

Die className property von DOM-Elemente von allen gängigen Browsern unterstützt wird (und wahrscheinlich alle kleineren).

Immer noch, wenn Sie dies in einer engen Schleife tun, ist der zusätzliche Aufwand der $() und attr Anrufe wahrscheinlich nicht wirklich viel.

+0

Das wäre 'this.className.split ('');' aber toller Punkt. – jensgram

+0

@jensgram: Wow, ich sah und reparierte das fast sofort, rede über das Timing. :-) –

+0

@ T.J. Crowder Und ich habe mir die Freiheit genommen, mein Geschlecht zu ändern :) – jensgram

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

Will do, aber Sie ein Argument zu split() geben müssen:

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

EDIT: Auf this.className
mit Betrachtenmitanstelle von $(this).attr('class'). Dies wird in other answers erwähnt.

Andy E hat einen tollen Bericht darüber gemacht, wie wir dazu neigen, jQuery zu überbeanspruchen: Utilizing the awesome power of jQuery to access properties of an element. Der Artikel behandelt speziell die Verwendung von .attr("id"), aber das Problem ist das gleiche für $(...).attr('className') vs this.className.

Sie konnte sogar

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

verwenden, wenn Sie nicht sicher sind, dass .className existiert.

+0

Gefangen auf meine Antwort :) –

+0

Oh cool. Danke, das war die Art, die ich brauche. – Peter

+0

@Peter Sie sollten wirklich @ T.J folgen. Crowders Ratschlag und benutze 'this.className' anstelle von' .attr() '. Ich habe gerade diesen Punkt in [einem anderen Thread] (http://stackoverflow.com/questions/4243554/jquery-if-checkbox-is-checked-do-this/4243575#4243575) gemacht. – jensgram

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

+1 das, was mir in den Sinn kam. – alex