jquery removeClass()不删除所有类[重复]
Posted
技术标签:
【中文标题】jquery removeClass()不删除所有类[重复]【英文标题】:jquery removeClass() not removing all classes [duplicate] 【发布时间】:2013-04-27 15:30:01 【问题描述】:我有一个这样的元素:
<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");
知道为什么后者可以删除所有类,但前者不能吗?
【问题讨论】:
@roasted 引用jQuery spec:“如果参数中没有指定类名,所有类都将被移除。”所以这应该可行。 在这里工作:jsfiddle.net/tKTgE/1 @mises 您看到这种行为的任何特定浏览器(版本)吗?还是有什么特殊情况? 由于过于本地化而关闭。代码确实有效,您的问题无法复制,您甚至都懒得详细说明细节。 我也有同样的问题。我知道用于旧版本 jQuery 的代码。 jQuery 1.9.1 和 jQuery UI 1.10.0 的组合似乎有问题。如果我删除了对 jQuery UI 的引用,那么 removeClass() 函数就会再次起作用。我将尝试测试稍新版本的 jQuery 和 JQuery UI,看看它们是否能解决问题。 【参考方案1】:似乎这是 jQuery 和 jQueryUI 不能很好地一起玩的一个已知问题:
Odd issue with jQuery .removeClass() not doing anything
http://bugs.jqueryui.com/ticket/9015
上面的答案是使用.removeAttr('class')
而不是.removeClass()
的解决方法
【讨论】:
我遇到了同样的问题。它“存在”,即使它不应该存在。解决方法效果很好。【参考方案2】:如果我们阅读documentation,它会说明:
如果包含一个类名作为参数,那么只有该类会 从匹配的元素集中删除。如果没有类名 参数中指定,所有类都将被删除。
换句话说,.removeClass()
应该在没有参数的情况下工作。我已经在 FF 中尝试过,并且可以按预期工作。
我尝试重现您遇到的问题,但无法重现:jsFiddle
<div class="one two three" id="waterhorse">horse</div>
$("#waterhorse").removeClass();
$("#waterhorse").addClass("four");
console.log($("#waterhorse"));
您使用的是什么浏览器版本?
【讨论】:
使用最新的 chrome、canary、FF。我也无法在 jsfiddle 中重现。奇怪的问题。【参考方案3】:您可以在 $(document).ready() 中执行此操作以实现此目的。
$("#waterhorse").attr("class", "");
or
$("#waterhorse").removeClass();
希望这会对你有所帮助。:)
【讨论】:
以上是关于jquery removeClass()不删除所有类[重复]的主要内容,如果未能解决你的问题,请参考以下文章
JQuery属性与样式——删除样式.removeClass()和切换样式.toggleClass()
[ jquery 方法 removeClass([class|fn]) ] 此方法为每个匹配的元素删除指定的类名
原生JS实现addClass,removeClass,toggleClass