2013-05-03 16 views
8

Ho un elemento come questo:jquery removeClass() non la rimozione di tutte le classi

<div class="one two three" id="waterhorse">horse</div> 

Quando eseguo questo codice nella console del browser:

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

ottengo questo:

[<div id=​"waterhorse" class=​"one two three">​horse​</div>​] 

In altre parole, non funziona; non rimuove alcuna classe sull'elemento. Sfortunatamente non riesco a riprodurlo in jsfiddle.

Tuttavia, posso rimuovere una classe specifica:

$("#waterhorse").removeClass("two"); 

Inoltre, questo rimuoverà tutte le classi:

$("#waterhorse").removeAttr("class"); 

Qualsiasi idea del perché questi ultimi lavori per rimuovere tutte le classi, ma gli ex doesn 't?

+0

Questo non è riproducibile in jsfiddle? –

+3

@roasted Citando da [jQuery spec] (http://api.jquery.com/removeClass/): "Se nel parametro non sono specificati nomi di classi, tutte le classi verranno rimosse." Quindi dovrebbe funzionare. – Sirko

+0

@Sirko Ya, ho appena visto che nel documento –

risposta

-1

Se leggiamo la documentation si afferma questo:

Se un nome di classe è incluso come parametro, allora solo quella classe sarà rimosso dal set di elementi corrispondenti. Se nessun nome classe è specificato nel parametro, tutte le classi verranno rimosse.

In altre parole, .removeClass() dovrebbe funzionare senza parametri. Ho provato questo in FF e questo funziona come previsto.

ho cercato di riprodurre il problema riscontrato, ma non poteva farlo: jsFiddle

<div class="one two three" id="waterhorse">horse</div> 

$("#waterhorse").removeClass(); 
$("#waterhorse").addClass("four"); 
console.log($("#waterhorse")); 

Quale versione del browser stai usando?

+0

Utilizzo dell'ultimo chrome, canarino, FF. Inoltre non posso riprodurre in jsfiddle. Strano problema – mises

-2

È possibile farlo in $ (document) .ready() per ottenere ciò. .

$("#waterhorse").attr("class", ""); 

or 

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

Spero che questo vi aiuterà a :)

Problemi correlati