Wird in jQuery empfohlen, vor dem Hinzufügen dieser Klasse zu überprüfen, ob einem Element bereits eine Klasse zugewiesen ist? Wird es überhaupt eine Wirkung haben?
Beispielsweise:
<label class='foo'>bar</label>
Wenn Sie Zweifel haben, ob die Klasse baz
bereits zugewiesen wurde, label
ist dies der beste Ansatz:
var class = 'baz';
if (!$('label').hasClass(class)) {
$('label').addClass(class);
}
oder würde das reichen:
$('label').addClass('baz');
.hasClass
nur verwendet, wenn ich überprüfen muss, ob eine Klasse vorhanden ist, wenn ich nur eine Klasse zuweisen muss - ich verwende.addClass
. jQuery dupliziert die Klassen nichtAntworten:
Rufen Sie einfach an
addClass()
. jQuery erledigt die Prüfung für Sie. Wenn Sie auf eigene Faust zu überprüfen, verdoppeln Sie die Arbeit, da jQuery wird immer noch die Prüfung für Sie ausführen.quelle
Eine einfache Überprüfung in der Konsole hätte ergeben, dass ein
addClass
mehrmaliger Anruf mit derselben Klasse sicher ist.Insbesondere finden Sie den Scheck in der Quelle
quelle
Diese Frage erregte meine Aufmerksamkeit nach einer anderen, die als Duplikat dieser Frage markiert war .
Diese Antwort fasst die akzeptierte Antwort mit einem kleinen Detail zusammen.
Sie versuchen zu optimieren, indem Sie unnötige Überprüfungen vermeiden. In diesem Zusammenhang sind folgende Faktoren zu beachten:
class="collapse"
in Ihrem HTML, callingElement.classList.add("collapse");
keine zusätzliche hinzufügen Zusammenbruch Klasse. Ich kenne die zugrunde liegende Implementierung nicht, aber ich denke, sie sollte gut genug sein.addClass
undremoveClass
Implementierungen durch (ich habe den Quellcode überprüft ). FüraddClass
nach einigen Prüfungen zu machen , und wenn eine Klasse vorhanden ist JQuery nicht versucht , es wieder hinzuzufügen. In ähnlicher WeiseremoveClass
führt JQuery etwas aus, entlang dessencur.replace( " " + clazz + " ", " " );
eine Klasse nur dann entfernt wird, wenn sie existiert.Bemerkenswert ist, dass JQuery einige Optimierungen in seiner
removeClass
Implementierung vornimmt, um ein sinnloses erneutes Rendern zu vermeiden. Es geht soDie beste Mikrooptimierung, die Sie durchführen können, besteht darin, den Aufwand für Funktionsaufrufe und die damit verbundenen Implementierungsprüfungen zu vermeiden.
Angenommen, Sie möchten eine Klasse mit dem Namen umschalten
collapse
, wenn Sie die vollständige Kontrolle darüber haben, wann die Klasse hinzugefügt oder entfernt wird, und wenn diecollapse
Klasse anfänglich nicht vorhanden ist, können Sie Folgendes optimieren:Wenn Sie eine Klasse aufgrund von Änderungen in der Bildlaufposition umschalten, wird dringend empfohlen, die Behandlung von Bildlaufereignissen zu drosseln .
quelle
quelle