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

Cli*_*ote 757 javascript jquery dom

而不是单独调用$("#item").removeClass()元素可能具有的每个类,是否有一个可以调用的函数从给定元素中删除所有CSS类?

jQuery和原始JavaScript都可以工作.

jim*_*myi 1470

$("#item").removeClass();
Run Code Online (Sandbox Code Playgroud)

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


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

$("#item").removeAttr('class');
$("#item").attr('class', '');
$('#item')[0].className = '';
Run Code Online (Sandbox Code Playgroud)

如果你没有jQuery,那么这将是你唯一的选择:

document.getElementById('item').className = '';
Run Code Online (Sandbox Code Playgroud)

  • `attr()`版本不应该是`prop()`吗? (6认同)
  • 在版本1.11.1中调用不带参数的removeClass()似乎不再起作用 (6认同)
  • @Vincent 似乎是 jQuery 中引入的一个错误,因为他们的文档明确指出:`如果类名作为参数包含在内,那么只会从匹配的元素集中删除该类。如果参数中没有指定类名,所有类将被删除。` https://api.jquery.com/removeclass/ (3认同)
  • jQuery UI 1.9 存在问题。如果 removeClass() 不起作用,请使用 removeAttr('class') (3认同)

da5*_*5id 115

如果没有指定任何特定内容,请挂起,不删除Class()默认删除所有类?所以

$("#item").removeClass();
Run Code Online (Sandbox Code Playgroud)

将自己做...

  • 现在正确地[记录](http://api.jquery.com/removeClass/):*如果参数中没有指定类名,则将删除所有类.* (5认同)
  • 是的:"从匹配元素集中删除所有或指定的类." (3认同)

Isa*_*ler 14

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

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

编辑:其他人说只是调用removeClass工作 - 我用谷歌JQuery游乐场测试了这个:http://savedbythegoog.appspot.com/?id = ag5zYXZlZGJ5dGhlZ29vZ3ISCxIJU2F2ZWRDb2RlGIS61gEM ...它的工作原理.所以你也可以这样做:

$("#item").removeClass();
Run Code Online (Sandbox Code Playgroud)


kan*_*gax 13

当然.

$('#item')[0].className = '';
// or
document.getElementById('item').className = '';
Run Code Online (Sandbox Code Playgroud)


Sha*_*elo 10

嘿,来找寻找类似的答案.然后它打了我.

删除特定类

$('.class').removeClass('class');
Run Code Online (Sandbox Code Playgroud)

假设元素有class ="class another-class"


小智 9

最短的方法

$('#item').removeAttr('class').attr('class', '');
Run Code Online (Sandbox Code Playgroud)


Vin*_*ent 7

由于并非所有版本的 jQuery 都是一样创建的,因此您可能会遇到与我相同的问题,这意味着调用 $("#item").removeClass(); 实际上并没有删除该类(可能是一个错误)。

更可靠的方法是简单地使用原始 JavaScript 并完全删除 class 属性。

document.getElementById("item").removeAttribute("class");
Run Code Online (Sandbox Code Playgroud)


小智 6

$('#elm').removeAttr('class');
Run Code Online (Sandbox Code Playgroud)

属性“class”将不再出现在“elm”中。


xgq*_*rms 6

不管你信不信,我喜欢使用原生 JavaScript 来做到这一点!

解决方案1:className

  1. 删除所有项目的所有类别
const items = document.querySelectorAll('item');
for (let i = 0; i < items.length; i++) {
  items[i].className = '';
}
Run Code Online (Sandbox Code Playgroud)
  1. 只删除第一项的所有类
const item1 = document.querySelector('item');
item1.className = '';
Run Code Online (Sandbox Code Playgroud)

解决方案2:classList

// remove all class of all items
 const items = [...document.querySelectorAll('.item')];
 for (const item of items) {
   item.classList.value = '';
 }
Run Code Online (Sandbox Code Playgroud)
 // remove all class of the first item
 const items = [...document.querySelectorAll('.item')];
 for (const [i, item] of items.entries()) {
   if(i === 0) {
     item.classList.value = '';
   }
 }
Run Code Online (Sandbox Code Playgroud)
 // or
 const item = document.querySelector('.item');
 item.classList.value = '';
Run Code Online (Sandbox Code Playgroud)

jQuery 方式(不推荐)

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

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

参考文献

https://developer.mozilla.org/en-US/docs/Web/API/Element/className

https://developer.mozilla.org/en-US/docs/Web/API/Element/classList


Ale*_*ton 5

你可以试试看

$(document).ready(function() {
   $('body').find('#item').removeClass();
});
Run Code Online (Sandbox Code Playgroud)

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

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

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