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 回答