我有一个像这样的元素:
<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");
知道为什么后者可以删除所有类,但前者没有?
答案 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();
希望这会对你有所帮助。:)