8

次のような要素があります。

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

ブラウザ コンソールでこのコードを実行すると、次のようになります。

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

私はこれを得る:

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

つまり、機能しません。要素のクラスは削除されません。残念ながらjsfiddleでは再現できません。

ただし、特定のクラスを削除できます。

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

また、これによりすべてのクラスが削除されます。

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

後者がすべてのクラスを削除するように機能するのに、前者が機能しない理由は何ですか?

4

3 に答える 3

10

これは、jQuery と jQueryUI がうまく連携しないという既知の問題のようです。

jQuery .removeClass() が何もしないという奇妙な問題

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

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

于 2013-05-30T14:31:37.360 に答える
-1

ドキュメントを読むと、次のように記載されています。

クラス名がパラメーターとして含まれている場合、そのクラスのみが一致した要素のセットから削除されます。パラメータにクラス名が指定されていない場合、すべてのクラスが削除されます。

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

発生している問題を再現しようとしましたが、できませんでした: jsFiddle

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

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

使用しているブラウザのバージョンは何ですか?

于 2013-05-03T09:27:54.293 に答える
-2

これを実現するために $(document).ready() でこれを行うことができます。

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

or

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

これがあなたを助けることを願っています.:)

于 2013-05-03T09:29:52.573 に答える