2013-05-03 16 views
8

Mam element takiego:jquery removeClass() nie usuwając wszystkie klasy

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

Kiedy uruchomić ten kod w konsoli Przeglądarka:

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

uzyskać to:

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

Innymi słowy, to nie działa; nie usuwa żadnych klas na elemencie. Niestety nie mogę tego odtworzyć w jsfiddle.

Jednak mogę usunąć konkretną klasę:

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

Ponadto, spowoduje to usunięcie wszystkich klas:

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

jakiś pomysł dlaczego te ostatnie prace, aby usunąć wszystkie klasy, ale były nie robi "t?

+0

Nie można tego powtórzyć w jsfiddle? –

+3

@roasted Cytowanie z [specyfikacja jQuery] (http://api.jquery.com/removeClass/): "Jeśli w parametrze nie podano nazw klas, wszystkie klasy zostaną usunięte." To powinno działać. – Sirko

+0

@Sirko Ya, właśnie zobaczyłem to w dokumencie –

Odpowiedz

-1

Jeśli czytamy documentation stwierdza to:

Jeśli nazwa klasy jest uwzględniona jako parametr, a następnie tylko, że klasa będzie zostać usunięte ze zbioru dopasowanych elementów. Jeśli w parametrze nie podano nazw klas, wszystkie klasy zostaną usunięte.

Innymi słowy, .removeClass() powinien działać bez parametrów. Próbowałem to w FF i działa zgodnie z przeznaczeniem.

Starałem się odtworzyć problem chcesz rozwiązać, ale nie mógł tego zrobić: jsFiddle

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

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

Co wersji przeglądarki używasz?

+0

Używanie najnowszego chromu, kanarka, FF. Nie mogę również reprodukować w jsfiddle. Dziwny problem. – mises

-2

Możesz to zrobić w $ (document) .ready(), aby to osiągnąć. .

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

or 

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

Nadzieja to pomoże :)

Powiązane problemy