2010-11-10 6 views
13

Ich versuche mit jquery eine Klasse aus einem Element zu entfernen (ohne vorher zu wissen, ob sie existiert) und ein neues Element hinzuzufügen, um sie zu ersetzen.jquery Entfernen einer Klasse (falls vorhanden und Hinzufügen einer neuen Klasse)

Wäre dies den besten Weg sein (ich bin skepticle, weil sein zu überprüfen, nicht, wenn die Klasse es vor dem Entfernen existiert):

$(elem).removeClass(oldClass).addClass(newClass); 

dank

+1

Müssen Sie wissen, ob es die alte Klasse hat, bevor sie es entfernt? .removeClass() wird erfolgreich ausgeführt, unabhängig davon, ob sie existiert oder nicht. Mit anderen Worten, wenn es existiert, wird es entfernt, wenn es nicht existiert, wird es übersprungen. –

Antwort

24
$(elem).removeClass(oldClass).addClass(newClass); 

Das ist perfekt. Keine Notwendigkeit, zuerst zu überprüfen; wenn es da ist, geht es, wenn nicht, ist es schon weg.

FYI, Sie können auch toggleClass() und hinzufügen/entfernen eine Klasse abhängig davon, ob es schon da ist oder nicht.

+1

+1, 24 Sekunden schneller als meine (jetzt gelöschte) Antwort. –

+0

Beachten Sie, dass Sie mit removeClass() auch mehrere Klassen gleichzeitig entfernen können, indem Sie sie getrennt voneinander aufteilen, z. B. $ (this) .removeClass ('one two'); –

+0

Nur neugierig, warum gibt es das nicht in der JQuery-Dokumentation (oder?). Ich frage mich nur, wie ich wissen soll, dass es keinen Fehler gibt, wenn die Klasse nicht existiert. Vielen Dank. – bba

9

Sie hasClass verwenden können:

if ($(elem).hasClass(oldClass)){ 
    // it has class 
} else { 
    // it doesn't have specified class 
} 

Beschreibung: Bestimmen Sie, ob eines der die zugeordneten Elemente zugeordnet sind ned die gegebene Klasse.

3
toggleClass 

tut, was man erwarten würde, es zu tun.

Verwandte Themen