Für ein jQuery-Plugin versuchen Sie dies
$.fn.removeClassLike = function(name) {
return this.removeClass(function(index, css) {
return (css.match(new RegExp('\\b(' + name + '\\S*)\\b', 'g')) || []).join(' ');
});
};
oder dies
$.fn.removeClassLike = function(name) {
var classes = this.attr('class');
if (classes) {
classes = classes.replace(new RegExp('\\b' + name + '\\S*\\s?', 'g'), '').trim();
classes ? this.attr('class', classes) : this.removeAttr('class');
}
return this;
};
Bearbeiten: Der zweite Ansatz sollte ein bisschen schneller sein, weil das nur eine Regex-Ersetzung auf die gesamte Klasse Zeichenfolge ausgeführt wird. Die erste (kürzere) verwendet jQuery eigene removeClass-Methode, die durch alle vorhandenen Klassennamen durchläuft und testet sie für die angegebene Regex eine nach der anderen, so unter der Haube es tut mehr Schritte für die gleiche Aufgabe. In der Praxis ist der Unterschied jedoch vernachlässigbar.
Geschwindigkeitsvergleich Benchmark