Ich versuche ein Skript zu implementieren, um einen anderen Klassennamen für ein bestimmtes Element festzulegen ...
Nehmen wir an, das Dom sieht so aus:
%Vor%Wenn ich
mache %Vor%Ich habe den folgenden Code gemacht, aber es funktioniert nicht:
%Vor% Anforderungen:
1) Ich benutze die Abfrage
2) Ich möchte nur einen Klassennamen übergeben, den neuen.
Lösung:
Der folgende Code funktioniert, aber ich mag es nicht, weil er globale Variable verwendet.
Irgendein Hinweis, um es zu beheben?
Aktualisierung:
Es gibt eine Sache, die du verstehen musst. Wenn Sie zwei verschiedene Verhaltensweisen verwenden möchten, müssen Sie nicht zwei verschiedene Klassen für die Verhaltensänderung verwenden . Eins ist genug, weil Sie das Verhalten basierend auf der Klasse auf oder aus ändern können.
Nehmen wir an, ich möchte, dass mein Element in einer bestimmten Weise ein rotes Hover-Ereignis hat. Und möchte, dass es einen blauen Hover-Event mit CSS in umgekehrter Richtung gibt. Dann ist dies der richtige Weg:
%Vor%Hier verwenden wir eine Schaltfläche, um alle Divs umzuschalten und ihr CSS-Verhalten zu ändern, sieht jetzt einfach aus, oder?
Wenn Sie jedoch auch Javascript / jQuery-Ereignisse aktivieren müssen, ist dies nicht möglich. In diesem Fall müssen Sie 3 andere Methoden verwenden, um dies zu verwalten; .on()
, .off()
und .hasClass()
.
Wie Sie sehen können, haben wir eine if-Anweisung hinzugefügt. Wenn das Element die Klasse .active
hat, drehen wir .off()
die .click()
. Und wenn es keine aktive Klasse gibt, drehen wir .click()
.on()
. Unter der if-Anweisung schalten wir immer die .active
-Klasse ein. Das muss also nicht in der if-Anweisung stehen.
Ich hoffe, das macht alles für euch klar, viel Glück!
Alte Antwort:
Es ist besser hier .toggleClass()
zu verwenden.
Verwenden Sie eine erste Klasse für das Element für die Standardeigenschaften und eine zweite wie .active
für die Interaktion.
Durch Verwendung von .on('click', function(){})
bind können Sie außerdem eine Interaktion hinzufügen, die sofort gebunden wird, sobald das Element umgeschaltet wird.
Hier ist eine Geige: Ссылка
Ich habe ein kleines jQuery-Plugin dafür. Entfernt die aktuelle Smart-Klasse (falls vorhanden) und fügt die neue Smart-Klasse hinzu. Ohne Aufruf des Parameters className
wird die aktuelle Smart-Klasse nur entfernt.
verwende es wie jede andere jQuery-Methode:
%Vor%NEUE, EINFACHERE ANTWORT Funktioniert ähnlich wie zuvor, mit 2 Ergänzungen: 1.) funktioniert, wenn es keine Klasse zu Beginn gibt und 2.) funktioniert, wenn andere Funktionen die Elementklasse zwischen Aufrufen ändern. Ich änderte auch den Funktionsnamen, so dass es nicht in jQuerys native toggleClass eingreift.
%Vor%aktualisierte Geige: Ссылка
ALTE ANTWORT Ich würde vorschlagen, die ursprüngliche Klasse im Elementdatenattribut zu speichern. Dann kann Ihre Funktion prüfen, ob diese Daten gesetzt sind, und wenn dies der Fall ist, löschen Sie die Elementklasse, indem Sie die ursprüngliche Klasse aus den Elementdaten und auch die neue Klasse, die Sie in der Funktion übergeben haben, hinzufügen.
Wenn keine Daten festgelegt sind, speichert die Funktion die aktuelle Klasse bei der ersten Ausführung als Daten.
Sieh dir diese Geige für ein funktionierendes Beispiel mit Kommentaren an: Ссылка
Hier ist der Code. Es ist eine jquery-Funktion, so dass es für jedes Element aufgerufen werden kann (und auch verkettbar ist!)
%Vor%Hoffe, das hilft!
Benutze einfach hasClass
. Aber Sie müssen der Funktion mitteilen, welche beide Klassen sind:
Als Antwort auf Ihre Frage würde ich mit ankurs Antwort
gehenAls Follow-up zu Sems Antwort zur Behandlung von jQuery-Ereignissen:
Sie können die Funktion on
verwenden, um jedes jquery-Ereignis von einem übergeordneten Knoten basierend auf einem Live-Filter zu behandeln:
Hier ist das jsFiddle .
Sie werden feststellen, dass die Funktion, die bei jedem Klicken auf ein Element aufgerufen wird, von ihrer "live" -Klasse abhängt und dass Sie click
handlers nicht jedes Mal manuell aktivieren / deaktivieren müssen, wenn ein Element die Klasse ändert.
Weitere Informationen erhalten Sie auf der Dokumentation .
Tags und Links javascript jquery