如何使用jQuery / JavaScript删除所有CSS类?


778

除了可以单独调用$("#item").removeClass()一个元素可能没有的每个类之外,还有一个可以调用的函数可以从给定元素中删除所有CSS类吗?

jQuery和原始JavaScript都可以使用。

Answers:


1509
$("#item").removeClass();

removeClass不带参数的调用将删除该项目的所有类。


您也可以使用(但不一定建议使用,正确的方法是上面的一种):

$("#item").removeAttr('class');
$("#item").attr('class', '');
$('#item')[0].className = '';

如果您没有jQuery,那么这几乎是您唯一的选择:

document.getElementById('item').className = '';

7
attr()版本不应该是prop()现在吗?
迈克

7
在版本1.11.1中,不带参数调用removeClass()似乎不再起作用
Vincent

1
@Vincent似乎是jQuery中引入的错误,因为其文档明确声明了这一点:If a class name is included as a parameter, then only that class will be removed from the set of matched elements. If no class names are specified in the parameter, all classes will be removed. api.jquery.com/removeclass
AtheistP3ace

是的,我也怀疑这是一个错误,而不是设计使然。同时,以下纯JavaScript可以正常工作。document.getElementById(“ item”)。removeAttribute(“ class”);
文森特

1
jQuery UI 1.9有问题。如果removeClass()无法正常工作,请使用removeAttr('class')
Milad

119

等等,如果未指定任何特定内容,removeClass()是否默认不删除所有类?所以

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

会自己做...


3
是:“从匹配的元素集中删除所有或指定的类。”
da5id

5
现在正确记录了文件如果在参数中未指定类名,则将删除所有类。
用户

17

只需将className实际DOM元素的属性设置为''(无)。

$('#item')[0].className = ''; // the real DOM element is at [0]

编辑:其他人说,只是调用removeClass有效-我在Google JQuery Playground上进行了测试:http : //savedbythegoog.appspot.com/ ? id=ag5zYXZlZGJ5dGhlZ29vZ3ISCxIJU2F2ZWRDb2RlGIS61gEM ...并能正常工作。因此,您也可以这样操作:

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

13

当然。

$('#item')[0].className = '';
// or
document.getElementById('item').className = '';


9

最短的方法

$('#item').removeAttr('class').attr('class', '');

5

你可以试试看

$(document).ready(function() {
   $('body').find('#item').removeClass();
});

如果必须访问不带类名的元素,例如必须添加新的类名,则可以执行以下操作:

$(document).ready(function() {
   $('body').find('#item').removeClass().addClass('class-name');
});

我在我的projet中使用该函数来删除和添加html构建器中的类。祝好运。


4
$('#elm').removeAttr('class');

“ elm”中将不再存在类attr。


这就是对我有用的。removeClass();没有为我工作。
kneidels

3

我喜欢使用本机js来做到这一点,不管它信不信!

1。

// remove all items all class  
const items = document.querySelectorAll('item');
for (let i = 0; i < items.length; i++) {
    items[i].className = '';
}

2。

// only remove all class of first item
const item1 = document.querySelector('item');
item1.className = '';

jQuery方式

  1. $("#item").removeClass();

  2. $("#item").removeClass("class1 ... classn");


2

由于并非所有版本的jQuery都是相同的,因此您可能会遇到与我相同的问题,即调用$(“#item”)。removeClass();。实际上不会删除该类。(可能是一个错误)

一种更可靠的方法是仅使用原始JavaScript并完全删除class属性。

document.getElementById("item").removeAttribute("class");

1

尝试 removeClass

例如

var nameClass=document.getElementsByClassName("clase1");
console.log("after", nameClass[0]);
$(".clase1").removeClass();
var nameClass=document.getElementsByClassName("clase1");
console.log("before", nameClass[0]);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="clase1">I am Div with class="clase1"</div>


1

让我们使用这个例子。也许您希望网站的用户知道某个字段有效,或者需要通过更改字段的背景色来引起注意。如果用户单击“重置”,则您的代码应仅重置具有数据的字段,而不必麻烦遍历页面上的所有其他字段。

此jQuery过滤器将仅删除具有此类的输入或选择字段的类“ highlightCriteria”。

$form.find('input,select').filter(function () {
    if((!!this.value) && (!!this.name)) {
        $("#"+this.id).removeClass("highlightCriteria");
    }
});

-2

我有类似的问题。在我的禁用元素上应用了aspNetDisabled类,并且所有禁用控件的颜色都不正确。因此,我使用jquery删除了我不会使用的每个元素/控件上的此类,并且一切正常,现在看起来很棒。

这是我删除aspNetDisabled类的代码:

$(document).ready(function () {

    $("span").removeClass("aspNetDisabled");
    $("select").removeClass("aspNetDisabled");
    $("input").removeClass("aspNetDisabled");

}); 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.