jquery removeClass()不删除所有类

时间:2013-05-03 09:12:01

标签: javascript jquery

我有一个像这样的元素:

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

当我在浏览器控制台中运行此代码时:

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

我明白了:

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

换句话说,它不起作用;它不会删除元素上的任何类。遗憾的是,我无法在jsfiddle中重现它。

但是,我可以删除一个特定的类:

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

此外,这将删除所有类:

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

知道为什么后者可以删除所有类,但前者没有?

3 个答案:

答案 0 :(得分:10)

似乎这是一个已知的问题,jQuery和jQueryUI不能很好地协同工作:

Odd issue with jQuery .removeClass() not doing anything

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

上面的答案是使用.removeAttr('class')代替.removeClass()

的变通方法

答案 1 :(得分:-1)

如果我们阅读documentation,请说明:

  

如果包含类名作为参数,则只有该类   从匹配元素集中删除。如果没有类名   在参数中指定的所有类都将被删除。

换句话说,.removeClass()应该没有参数。我在FF中尝试了这个,这可以按预期工作。

我尝试重现您遇到的问题,但无法做到:jsFiddle

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

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

您使用的浏览器版本是什么?

答案 2 :(得分:-2)

您可以在$(document).ready()中执行此操作来实现此目的。

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

or

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

希望这会对你有所帮助。:)