删除除了一个的所有课程

好吧,我知道用一些jQuery动作,我们可以添加很多类到一个特定的div:

<div class="cleanstate"></div> 

让我们说,一些点击和其他的东西,div得到了很多类

 <div class="cleanstate bgred paddingleft allcaptions ..."></div> 

那么,我怎样才能删除除了一个之外的所有类呢? 我提出的唯一的想法是这样的:

 $('#container div.cleanstate').removeClass().addClass('cleanstate'); 

虽然removeClass()杀死了所有的类,但是div被搞砸了,但是在addClass('cleanstate')之后加上了它就恢复了正常。 另一个解决scheme是把一个ID属性与基本的CSS属性,所以他们不会被删除,什么也提高了性能,但我只是想知道另一种解决scheme来摆脱除“.cleanstate”

我这样问,是因为在真正的剧本中,div遭受了各种各样的变化。

而不是分两步完成,你可以用attr重新设置整个值,方法是用你想要的类覆盖所有的类值:

 jQuery('#container div.cleanstate').attr('class', 'cleanstate'); 

示例: http : //jsfiddle.net/jtmKK/1/

使用attr直接将class属性设置为所需的特定值:

 $('#container div.cleanstate').attr('class','cleanstate'); 

用普通的旧JavaScript,而不是JQuery:

 document.getElementById("container").className = "cleanstate"; 

有时你需要保留一些CSSanimation的类,因为一旦你删除所有的类,animation可能无法工作。 相反,你可以保留一些类,并删除像这样的其余部分:

 $('#container div.cleanstate').removeClass('removethis removethat').addClass('cleanstate'); 

关于抢答和为了完整起见,你也可以使用querySelector和vanilla

 document.querySelector('#container div.cleanstate').className = "cleanstate";