Как удалить все CSS-классы, используя jQuery / JavaScript?

779

Вместо индивидуального вызова $("#item").removeClass()для каждого отдельного класса, который может иметь элемент, существует ли отдельная функция, которая может быть вызвана, чтобы удалить все классы CSS из данного элемента?

Будет работать как jQuery, так и сырой JavaScript.

Нажмите Upvote
источник

Ответы:

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

Вызов removeClassбез параметров удалит все классы элемента.


Вы также можете использовать (но это не обязательно рекомендуется, правильный путь указан выше):

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

Если у вас не было jQuery, то это был бы ваш единственный вариант:

document.getElementById('item').className = '';
jimyi
источник
7
Разве attr()версия не должна быть prop()сейчас?
Майк
7
Вызов removeClass () без параметров, похоже, больше не работает в версии 1.11.1
Винсент,
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 ( "пункт") removeAttribute ( "класс").
Винсент
1
Существует проблема с jQuery UI 1.9. Если removeClass () не работают использование removeAttr ( 'класс')
Milad
119

Держись, разве по умолчанию removeClass () не удаляет все классы, если ничего не указано? Так

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

сделаем это самостоятельно ...

da5id
источник
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 = '';
kangax
источник
11

Хех, пришел в поисках аналогичного ответа. Тогда это поразило меня.

Удалить определенные классы

$('.class').removeClass('class');

Скажите, есть ли у элемента class = "class another-class"

Шон Ребело
источник
9

Самый короткий метод

$('#item').removeAttr('class').attr('class', '');
Янни
источник
5

Вы можете просто попробовать

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

Если вам нужен доступ к этому элементу без имени класса, например, вам нужно добавить новое имя класса, вы можете сделать это:

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

Я использую эту функцию в моем проекте, чтобы удалить и добавить класс в HTML-сборщик. Удачи.

Алессандро Дурак Чиак Дантон
источник
4
$('#elm').removeAttr('class');

больше не будет принадлежать классу в "вязе".

uihelp
источник
это то, что сработало для меня. removeClass();не работал для меня.
колени
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");

xgqfrms
источник
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>

х-RW
источник
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");

}); 
Незир
источник