Hat Element diese Klasse? - eine kleine JavaScript Funktion | 30. Januar 2006 um 21:45 Uhr / Webdesign Programming /
Ich war überrascht über die große Resonanz zum letzten JavaScript Beitrag und habe durch eure Kommentare einige gute Ideen bekommen. Deshalb möchte ich heute mein Script zum überprüfen, ob ein Element eine gewisse CSS-Klasse besitzt zur Diskussion stellen. Hier erst einmal das Script:
function hasClass (element, checkClass) {
var classes = element.className.split(" ");
for(var class in classes)
if(class == checkClass) return true;
return false;
}
Ich weiß schon, das ist keine Raketenwissenschaft, aber vielleicht hat der eine oder andere einen schnelleren oder eleganteren Ansatz?
Kommentare
Die Kommentare sind für diesen Eintrag geschlossen.




abonnieren.
Henryk Plötz aus Berlin schrieb am 30.01.2006
Moin,
Ja, aus s5 (ich habe diese mindestens schonmal im Chat erwähnt, bestimmt auch im Forum):
function hasClass(object, className) { if (!object.className) return false; return (object.className.search('(^|\\s)' + className + '(\\s|$)') != -1); }Ist kürzer und aller Wahrscheinlichkeit nach auch schneller.
--
Henryk Plötz
Grüße aus Berlin
Martin schrieb am 31.01.2006
Bei so simplen Sachen würde ich eine Version ohne reguläre Ausdrücke benutzen, sprich die von Jeena. Normalerweise sind die schneller (auch wenn's hier kaum etwas ausmachen dürfte). Und so viel komplizierter ist es ja auch nicht ohne (im Gegenteil, Anfänger haben oft Probleme mit regulären Ausdrücken, sei es, dass sie ^ und $ vergessen oder einmal zu wenig maskieren; Fehlerquellen gibt's da viele).
wahsaga schrieb am 02.02.2006
Einfach nur an einem Leerzeichen zu splitten, wäre nicht auf alle Fälle anwendbar - auch ein Tab oder Newline ist im class-Attribut erlaubt und könnte dort zwei Klassennamen voneinander trennen.
Da hätte Henryks Methode, die per RegExp nach White Space sucht, Vorteile.
Ist allerdings auch eine Frage der "Selbstdisziplin" beim Coden.
Wenn ich im Auge behalte, dass ich lediglich nach einem Space als Trennzeichen suchen möchte - und dann meine class-Attribute auch nur entsprechend befülle, stellt natürlich auch die "einfachere" Methode kein Problem dar.
Und man muss ja nicht immer für simple Aufgaben eierlegende Wollmilchsäue verwenden :-)