Чтобы сделать его немного чище, вы можете создать небольшое расширение.
jQuery.fn.removeClassExcept = function (val) {
return this.each(function () {
$(this).removeClass().addClass(val);
});
};
Тогда вы можете использовать его как
$("selector").removeClassExcept("aa dd");
Вот пример: http://jsfiddle.net/9xhND/
ОБНОВЛЕНИЕ
Используя логику Брэда Кристи, обновление теперь будет сохранять только те классы, которые были там изначально, и не будет добавлять новые классы.http://jsfiddle.net/9xhND/1/
jQuery.fn.removeClassExcept = function (val) {
return this.each(function (index, el) {
var keep = val.split(" "), // list we'd like to keep
reAdd = [], // ones that should be re-added if found
$el = $(el); // element we're working on
// look for which we re-add (based on them already existing)
for (var c = 0; c < keep.length; c++){
if ($el.hasClass(keep[c])) reAdd.push(keep[c]);
}
// drop all, and only add those confirmed as existing
$el
.removeClass() // remove existing classes
.addClass(reAdd.join(' ')); // re-add the confirmed ones
});
};