jQuery / JavaScriptを使用してすべてのCSSクラスを削除する方法は?


778

$("#item").removeClass()要素が持つ可能性のあるすべての単一のクラスを個別に呼び出す代わりに、特定の要素からすべてのCSSクラスを削除する単一の関数を呼び出すことができますか?

jQueryとraw JavaScriptの両方が機能します。

回答:


1510
$("#item").removeClass();

removeClassパラメータなしで呼び出すと、アイテムのすべてのクラスが削除されます。


また、使用することもできます(ただし、必ずしも推奨されるわけではありません。正しい方法は上記の方法です)。

$("#item").removeAttr('class');
$("#item").attr('class', '');
$('#item')[0].className = '';

jQueryがない場合は、これがほとんど唯一のオプションです。

document.getElementById('item').className = '';

7
attr()バージョンはprop()今ではいけませんか?
Mike

7
パラメータなしでremoveClass()を呼び出すと、バージョン1.11.1では動作しないようです
Vincent

1
@Vincentのドキュメントには明示的に記載されているため、jQueryで導入されたバグのようです:If a class name is included as a parameter, then only that class will be removed from the set of matched elements. If no class names are specified in the parameter, all classes will be removed. api.jquery.com/removeclass
AtheistP3ace

はい、私はそれがバグであり、設計によるものではないことも疑っています。それまでの間、次の純粋なJavaScriptは問題なく動作します。document.getElementById( "item")。removeAttribute( "class");
Vincent

1
jQuery UI 1.9に問題があります。removeClass()は、作業用removeAttr(「クラス」)しなかった場合
ミラド

119

ちょっと待って、removeClass()は、何も指定されていない場合、デフォルトですべてのクラスを削除しないのですか そう

$("#item").removeClass();

独自にそれを行います...


3
ええ:「一致した要素のセットからすべてまたは指定されたクラスを削除します。」
da5id 2009

5
現在は適切に文書化されています。パラメーターでクラス名が指定されていない場合、すべてのクラスが削除されます。
ユーザー

17

className実際のDOM要素の属性を''(nothing)に設定するだけです。

$('#item')[0].className = ''; // the real DOM element is at [0]

編集:他の人々は、単に呼び出すだけでremoveClass動作すると言っています-私はこれをGoogle JQuery Playgroundでテストしました:http ://savedbythegoog.appspot.com/ ? id=ag5zYXZlZGJ5dGhlZ29vZ3ISCxIJU2F2ZWRDb2RlGIS61gEM ...そしてそれは動作します。したがって、次のようにすることもできます。

$("#item").removeClass();

13

もちろん。

$('#item')[0].className = '';
// or
document.getElementById('item').className = '';

11

ふむ、似たような答えを探しに来た。それからそれは私を襲った。

特定のクラスを削除する

$('.class').removeClass('class');

要素にclass = "class another-class"がある場合は、


9

最短の方法

$('#item').removeAttr('class').attr('class', '');

5

あなたは試すことができます

$(document).ready(function() {
   $('body').find('#item').removeClass();
});

クラス名なしでその要素にアクセスする必要がある場合、たとえば新しいクラス名を追加する必要がある場合は、次のようにすることができます。

$(document).ready(function() {
   $('body').find('#item').removeClass().addClass('class-name');
});

私は自分のプロジェクトでその関数を使用して、HTMLビルダーでクラスを削除および追加します。幸運を。


4
$('#elm').removeAttr('class');

「elm」にクラス属性が存在しなくなりました。


これは私のために働いたものです。removeClass();私にとってはうまくいきませんでした。
kneidels

3

私はネイティブのjsを使用するのが好きです、信じられないかもしれませんが!

1。

// remove all items all class  
const items = document.querySelectorAll('item');
for (let i = 0; i < items.length; i++) {
    items[i].className = '';
}

2。

// only remove all class of first item
const item1 = document.querySelector('item');
item1.className = '';

jQueryの方法

  1. $("#item").removeClass();

  2. $("#item").removeClass("class1 ... classn");


2

jQueryのすべてのバージョンが同じように作成されているわけではないため、同じ問題が発生する可能性があります。つまり、$( "#item")。removeClass();を呼び出すことになります。実際にはクラスを削除しません。(おそらくバグ)

より信頼性の高い方法は、生のJavaScriptを使用し、クラス属性を完全に削除することです。

document.getElementById("item").removeAttribute("class");

1

で試す removeClass

例えば

var nameClass=document.getElementsByClassName("clase1");
console.log("after", nameClass[0]);
$(".clase1").removeClass();
var nameClass=document.getElementsByClassName("clase1");
console.log("before", nameClass[0]);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="clase1">I am Div with class="clase1"</div>


1

この例を使用してみましょう。多分あなたはあなたのウェブサイトのユーザーにフィールドが有効であることを知らせたいか、フィールドの背景色を変更することによって注意が必要です。ユーザーがリセットを押した場合、コードはデータのあるフィールドのみをリセットし、ページ上の他のすべてのフィールドをループする必要はありません。

このjQueryフィルターは、このクラスを持つ入力フィールドまたは選択フィールドに対してのみ、クラス「highlightCriteria」を削除します。

$form.find('input,select').filter(function () {
    if((!!this.value) && (!!this.name)) {
        $("#"+this.id).removeClass("highlightCriteria");
    }
});

-2

同様の問題がありました。私の場合、無効化された要素にaspNetDisabledクラスが適用され、無効化されたすべてのコントロールの色が間違っていました。したがって、私はjqueryを使用して、私が使用しないすべての要素/コントロールからこのクラスを削除しました。

これは、aspNetDisabledクラスを削除するための私のコードです。

$(document).ready(function () {

    $("span").removeClass("aspNetDisabled");
    $("select").removeClass("aspNetDisabled");
    $("input").removeClass("aspNetDisabled");

}); 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.