Come rimuovere tutte le classi CSS usando jQuery / JavaScript?


778

Invece di chiamare individualmente $("#item").removeClass()ogni singola classe che un elemento potrebbe avere, esiste una singola funzione che può essere chiamata che rimuove tutte le classi CSS dall'elemento dato?

Sia jQuery che JavaScript non funzioneranno.

Risposte:


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

La chiamata removeClasssenza parametri rimuoverà tutte le classi dell'articolo.


Puoi anche usare (ma non è necessariamente raccomandato, il modo corretto è quello sopra):

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

Se non avessi jQuery, questa sarebbe praticamente la tua unica opzione:

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

7
La attr()versione non dovrebbe essere prop()adesso?
Mike

7
Chiamare removeClass () senza parametri non sembra funzionare più nella versione 1.11.1
Vincent

1
@Vincent Sembra un bug introdotto in jQuery poiché la loro documentazione afferma esplicitamente questo: 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

Sì, sospetto anche che si tratti di un bug, e non di progettazione. Nel frattempo, il seguente JavaScript puro funziona perfettamente. document.getElementById ( "voce") removeAttribute ( "classe").;
Vincent,

1
Si è verificato un problema con l'interfaccia utente 1.9 di jQuery. Se removeClass () non ha funzionato, usa removeAttr ('class')
Milad

119

Aspetta, non rimuove defaultClass () per rimuovere tutte le classi se non viene specificato nulla di specifico? Così

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

lo farà da solo ...


3
yeah: "Rimuove tutte o le classi specificate dal set di elementi corrispondenti."
da5id,

5
Ora è documentato correttamente: se nel parametro non viene specificato alcun nome di classe, tutte le classi verranno rimosse.
utente


13

Ovviamente.

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

11

Heh, è ​​venuto alla ricerca di una risposta simile. Poi mi ha colpito.

Rimuovi classi specifiche

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

Indica se element ha class = "class another-class"


9

Il metodo più breve

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

5

Puoi solo provare

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

Se devi accedere a quell'elemento senza il nome della classe, ad esempio devi aggiungere un nuovo nome di classe, puoi farlo:

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

Uso questa funzione nel mio progetto per rimuovere e aggiungere classe in un generatore HTML. In bocca al lupo.


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

la classe non sarà più presente in "olmo".


Questo è ciò che ha funzionato per me. removeClass();Non ha funzionato per me.
inginocchia

3

Mi piace usare js nativi per farlo, che ci crediate o no!

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 = '';

modi jQuery

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

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


2

Dal momento che non tutte le versioni di jQuery sono uguali, è possibile che si verifichi lo stesso problema che ho fatto, che significa chiamare $ ("# item"). RemoveClass (); non rimuove effettivamente la classe. (Probabilmente un bug)

Un metodo più affidabile consiste semplicemente nell'utilizzare JavaScript non elaborato e rimuovere del tutto l'attributo class.

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

1

prova con removeClass

Per esempio :

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

Usiamo questo esempio. Forse vuoi che l'utente del tuo sito web sappia che un campo è valido o ha bisogno di attenzione cambiando il colore di sfondo del campo. Se l'utente preme reimpostare, il codice deve reimpostare solo i campi che contengono dati e non preoccuparsi di scorrere tutti gli altri campi della pagina.

Questo filtro jQuery rimuoverà la classe "highlightCriteria" solo per i campi di input o di selezione che hanno questa classe.

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

-2

Ho avuto un problema simile. Nel mio caso su elementi disabilitati è stata applicata la classe aspNetDisabled e tutti i controlli disabilitati avevano colori sbagliati. Quindi, ho usato jquery per rimuovere questa classe su ogni elemento / controllo che non voglio e tutto ora funziona e sembra fantastico.

Questo è il mio codice per rimuovere la classe aspNetDisabled:

$(document).ready(function () {

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

}); 
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.