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?