Як видалити всі класи CSS за допомогою jQuery / JavaScript?


778

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

Працюватимуть як jQuery, так і сирий JavaScript.

Відповіді:


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

Виклик removeClassбез параметрів видалить усі класи елемента.


Ви також можете використовувати (але це не обов'язково, рекомендується, правильний спосіб описаний вище):

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

Якщо у вас не було jQuery, то це був би ваш єдиний варіант:

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

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 ("елемент"). deleteAttribute ("клас");
Вінсент

1
Виникла проблема з jQuery UI 1.9. Якщо RemoveClass () не працював, використовуйте removeAttr ('class')
Мілад

119

Зачекайте, чи не видаляє за замовчуваннямClass () видалення всіх класів, якщо нічого конкретного не вказано? Тому

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

зробить це самостійно ...


3
так: "Видаляє всі або вказаний клас (и) з набору відповідних елементів."
da5id

5
Тепер це задокументовано належним чином: Якщо в параметрі не вказано назви класів, всі класи будуть видалені.
користувач

17

Просто встановіть classNameатрибут реального елемента DOM ''(нічого).

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

Редагувати: Інші люди сказали, що лише дзвінки на removeClassроботу - я перевірив це на майданчику майданчика JQuery: http://savedbythegoog.appspot.com/?id=ag5zYXZlZGJ5dGhlZ29vZ3ISCxIJU2F2ZWRDb2RlGIS61gEM ... і це працює. Тож ви також можете це зробити так:

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


11

Хе, прийшов у пошуках подібної відповіді. Тоді це мене вдарило.

Видаліть конкретні класи

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

Скажіть, якщо елемент має клас = "клас іншого класу"



5

Можна просто спробувати

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

Якщо вам потрібно отримати доступ до цього елемента без назви класу, наприклад, вам потрібно додати нове ім'я класу, ви можете зробити це:

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

Я використовую цю функцію в своєму проекті для видалення та додавання класу в HTML-конструкторі. Удачі.


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

більше не буде attr класу atr в "elm".


це те, що працювало для мене. 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 і повністю видалити атрибут класу.

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 видалить клас "selectCriteria" лише для введення або вибере поля, у яких є цей клас.

$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");

}); 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.