2013-05-03 6 views
8

私はこのような要素持って取り外していない:私は、ブラウザのコンソールでこのコードを実行するとjqueryのremoveClass()すべてのクラス

<div class="one two three" id="waterhorse">horse</div> 

を:

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

私はこれを取得:

[<div id=​"waterhorse" class=​"one two three">​horse​</div>​] 

つまり、動作しません。要素上のクラスは削除されません。私は残念ながらjsfiddleでそれを再現することはできません。

しかし、私は特定のクラスを削除することができます。

$("#waterhorse").removeAttr("class"); 

後者はすべてのクラスを削除するために働く理由を任意のアイデアを、前者のdoesn:

$("#waterhorse").removeClass("two"); 

また、これはすべてのクラスを削除します't?

+0

これはjsfiddleでは再現できません。 –

+3

@roasted [jQuery spec](http://api.jquery.com/removeClass/)からの引用: "パラメータにクラス名が指定されていない場合は、すべてのクラスが削除されます。"これはうまくいくはずです。 – Sirko

+0

@Sirkoええ、ちょうどその文書を見た –

答えて

-1

我々はそれがこの述べdocumentationを読めば:クラス名をパラメータとして含まれている場合

を、そして唯一のそのクラスは マッチした要素の集合から削除されます。パラメータに のクラス名が指定されていない場合は、すべてのクラスが削除されます。

つまり、.removeClass()はパラメータなしで動作するはずです。私はFFでこれを試して、これは意図したとおりに動作します。

私はあなたが発生している問題を再現してみましたが、それはそれを行うことができませんでした:あなたはjsFiddle

<div class="one two three" id="waterhorse">horse</div> 

$("#waterhorse").removeClass(); 
$("#waterhorse").addClass("four"); 
console.log($("#waterhorse")); 

何ブラウザのバージョンを使用していますか?

+0

最新のクロム、カナリア、FFを使用しています。私もjsfiddleで再現することはできません。奇妙な問題。 – mises

-2

$(document).ready()でこれを行うことができます。 。これは、一緒にうまくプレーしていないjQueryとjQueryUIの既知の問題ですように、これはあなたを助ける:)

9

$("#waterhorse").attr("class", ""); 

or 

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

ホープようだ:

Odd issue with jQuery .removeClass() not doing anything

http://bugs.jqueryui.com/ticket/9015

上記の答えは、.removeClass()の代わりに.removeAttr('class')を使用する回避策です。

+0

私は同じ問題を抱えていました。たとえそれがあってはならないとしても、「存在する」。回避策はうまく動作します。 – Garavani

関連する問題