100

さて、いくつかの jQuery アクションを使用して、特定の div に多くのクラスを追加できることを知っています。

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

いくつかのクリックなどで、divが多くのクラスを取得するとしましょう

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

では、1 つを除いてすべてのクラスを削除するにはどうすればよいでしょうか。私が思いついた唯一のアイデアはこれです:

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

すべてのクラスを殺している間removeClass()、divは台無しになりますが、その直後に追加するaddClass('cleanstate')と正常に戻ります。もう1つの解決策は、ID属性をベースCSSプロパティに配置して、削除されないようにすることです。これにより、パフォーマンスも向上しますが、「.cleanstate」以外のすべてを取り除くための別の解決策を知りたいだけです

実際のスクリプトでは、div がさまざまなクラスの変更を受けるため、私はこれを求めています。

4

6 に答える 6

218

attr2 つのステップで行う代わりに、必要なクラスですべてのクラス値を上書きすることで、値全体を一度にリセットできます。

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

サンプル: http://jsfiddle.net/jtmKK/1/

于 2011-03-19T16:30:43.543 に答える
33

attrを使用して、クラス属性を必要な特定の値に直接設定します。

$('#container div.cleanstate').attr('class','cleanstate');
于 2011-03-19T16:30:52.197 に答える
20

JQuery ではなく、普通の古い JavaScript を使用する場合:

document.getElementById("container").className = "cleanstate";
于 2012-02-09T15:23:03.870 に答える
2

robs answer に関しては、完全を期すために、バニラで querySelector を使用することもできます

document.querySelector('#container div.cleanstate').className = "cleanstate";
于 2015-11-04T08:21:03.197 に答える