jQuery - regexp-Auswahl und removeClass()?
Ich habe schon mehrere auto-generierten HTML-docs, die Tausende von Zeilen lang, und ich brauche, um aufzuräumen die Quelle. Meist entfernen müssen und Klassennamen wie "table-col-##". Dies ist ein zwei-Schritt-problem:
- Wählen Sie eine beliebige und alle Klassen, die table-col -## ein, wobei ## eine Zahl zwischen 0-999
- Entfernen Sie die passende Klasse aus dem element zu entfernen, ohne eine der anderen Klassen
So, auf die es hinausläuft: ich brauche einen Weg, wenn möglich, zu verwenden regexps in der $ () - Selektoren, und dann entweder die zum erreichen der ausgewählten Klasse in jeder() - oder gelten die regexp zu $.removeClass(). Kann jemand mich in die richtige Richtung?
UPDATE: gibt es irgendeine Art von $.removeClass([Auswahl]) - Funktionalität? Das scheint die einfachste Möglichkeit zur Lösung des zweiten Teils.
- Würde
"[class^='table-col-']"
akzeptabel sein, oder ist das zu allgemein? - Leider zu allgemein - es gibt Klassen wie table-col-neue und table-col-Fett, die bewahrt werden müssen.
- nachdem Sie die gefundenen Elemente mit dem Selektor @Jakub Michálek vorgeschlagen, die Sie tun können .each(function(el) { el.className = el.className.replace(/table-col-\d{1,3}/, ""); })
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn nur die zahlen sind akzeptabel, aber es kann auch andere Zeichen auch, ich würde anfangen mit etwas wie folgt aus (nicht getestet, aber bearbeitet mit Hilfe von Kommentaren):
return this.className.split(' ').filter(function(className) {return className.match(/table-col-\d{1,3}/)}).join(' ');
. Siehe Aktualisiert JSFiddle.Können Sie dies tun, ohne die Notwendigkeit zur Spaltung der Klasse, die Namen in ein array. Lassen Sie den regulären Ausdruck, der alle Arbeit machen.
Für jedes element gefunden, entfernen Sie alle Klassen, die mit dem regulären Ausdruck übereinstimmen.
JS:
, Dies auszuprobieren:
http://jsfiddle.net/adiioo7/AmK4a/1/
JS:-
Beispiel-HTML:-
Ausgabe von HTML:-
Versuchen Sie dies:
Live: http://jsfiddle.net/Z3D6P/
removeClass
nur eine Zeit, sondern als Berufung ineach
tiefen Brunnen.versuchen
sehen http://api.jquery.com/removeClass/ und http://api.jquery.com/attribute-starts-with-selector/
bearbeitet:
Diese Frage ist jetzt alt, aber wenn jemand anderes kommt über Sie...
Habe ich eine einfache plugin jquery.classMatch bietet