Вы можете передать функцию removeClass, которая возвращает список классов, которые вы хотите удалить. В этой функции вы можете проверить, начинается ли каждое из имен классов с bg, а затем, если да, добавить его в список классов, которые вы хотите удалить.
$("#buttoncolors").on("change", function () {
var valcolor = $("#buttoncolors").val();
$("#buttonstyle").removeClass(function (index, classNames) {
var current_classes = classNames.split(" "), // change the list into an array
classes_to_remove = []; // array of classes which are to be removed
$.each(current_classes, function (index, class_name) {
// if the classname begins with bg add it to the classes_to_remove array
if (/bg.*/.test(class_name)) {
classes_to_remove.push(class_name);
}
});
// turn the array back into a string
return classes_to_remove.join(" ");
});
$("#buttonstyle").addClass(valcolor);
});
Демонстрация: http://codepen.io/iblamefish/pen/EhCaH
БОНУС
Вы можете упорядочить код, используя именованную, а не анонимную функцию для обратного вызова, чтобы вы могли использовать ее более одного раза.
// name the function
function removeColorClasses (index, classNames) {
var current_classes = classNames.split(" "), // change the list into an array
classes_to_remove = []; // array of classes which are to be removed
$.each(current_classes, function (index, class_name) {
// if the classname begins with bg add it to the classes_to_remove array
if (/bg.*/.test(class_name)) {
classes_to_remove.push(class_name);
}
});
// turn the array back into a string
return classes_to_remove.join(" ");
}
Затем вы можете использовать эту функцию снова и снова, передав ее имя вместо function () { ... }
.
// code that the dropdown box uses
$("#buttoncolors").on("change", function () {
var valcolor = $("#buttoncolors").val();
$("#buttonstyle").removeClass(removeColorClasses);
$("#buttonstyle").addClass(valcolor);
});
// another example: add a new button to remove all classes using the same function
$("#buttonclear").on("click", function () {
$("#buttonstyle").removeClass(removeColorClasses);
});
person
iblamefish
schedule
16.04.2013