我有这样一个元素:
<div class="one two three" id="waterhorse">horse</div>
Run Code Online (Sandbox Code Playgroud)
当我在浏览器控制台中运行此代码时:
$("#waterhorse").removeClass();
Run Code Online (Sandbox Code Playgroud)
我明白了:
[<div id=?"waterhorse" class=?"one two three">?horse?</div>?]
Run Code Online (Sandbox Code Playgroud)
换句话说,它不起作用; 它不会删除元素上的任何类.遗憾的是我无法在jsfiddle中重现它.
但是,我可以删除一个特定的类:
$("#waterhorse").removeClass("two");
Run Code Online (Sandbox Code Playgroud)
此外,这将删除所有类:
$("#waterhorse").removeAttr("class");
Run Code Online (Sandbox Code Playgroud)
知道为什么后者可以删除所有类,但前者不是吗?
Ben*_*lls 10
似乎这是一个已知的问题,jQuery和jQueryUI不能很好地一起玩:
jQuery .removeClass()没有做任何事情的奇怪问题
http://bugs.jqueryui.com/ticket/9015
上面的答案是一个使用.removeAttr('class')而不是使用的解决方法.removeClass()
小智 -1
如果我们阅读文档,它会说明这一点:
如果包含类名作为参数,则只有该类将从匹配元素集中删除。如果参数中未指定类名,则将删除所有类。
换句话说,.removeClass()应该在没有参数的情况下工作。我已经在 FF 中尝试过,并且按预期工作。
我尝试重现您遇到的问题,但无法做到:jsFiddle
<div class="one two three" id="waterhorse">horse</div>
$("#waterhorse").removeClass();
$("#waterhorse").addClass("four");
console.log($("#waterhorse"));
Run Code Online (Sandbox Code Playgroud)
您使用什么版本的浏览器?