ChrisB: jQuery: Abfragen, ob ein Element eine Klasse mit Präfix hat

Beitrag lesen

Hi,

Hat jemand einen schlanken Ansatz parat ?

Mathias’ Vorschlag wäre eine Möglichkeit – eine andere wäre ein kleiner regulärer Ausdruck:

var elementId;  
if( elementId = $("element").attr("class").match(/((^|\s)id-([\S]+))/) ) {  
  elementId = elementId[3];  
} else {  
  elementId = null;  
}

Der Ausdruck verlangt, dass "id-" entweder direkt am Anfang des Inhaltes des class-Attributes steht, oder dass das davor beliebiger Whitespace steht; und direkt dahinter dann noch ein oder mehr beliebige nicht-Whitespace-Zeichen folgen.
Wenn dieser Ausdruck einen Treffer landet, liefert er ein Array mit Teiltreffern zurück - der vierte Eintrag in diesem Array ist der gesuchte Teil hinter "id-".
Wenn kein Treffer gefunden wurde, wird elementId explizit auf null gesetzt.
(Sollten mehrere id-… im class-Attribut drinstehen, liefert es nur den Wert des ersten.)

Die Variable elementId habe ich hier gleich als „Empfänger“ für die Rückgabe von String.match benutzt – das ist vielleicht am falschen Ende gespart. Wenn du das Konstrukt mehrfach brauchst, solltest du es in eine Funktion auslagern, der du einen jQuery-Elementwrapper übergibst, und darin eine lokale Variable für diesen Zweck nutzen.

Und teste es bitte ausreichend in den Browser-Versionen, in denen du das ganze brauchst – vor allem ältere IE haben was reguläre Ausdrücke angeht IIRC einige Bugs/Merkwürdigkeiten gehabt, über die man manchmal schön stolpern kann.

MfG ChrisB

--
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?