Ich bin neu bei JQuery. In meiner App habe ich folgendes:
$("#displayPanel div").live("click", function(){
$(this).css({'background-color' : 'pink', 'font-weight' : 'bolder'});
});
Wenn ich auf ein Div klicke, ändert sich die Farbe dieses Div. Innerhalb dieser Klickfunktion habe ich einige Funktionen zu erledigen. Nach all dem möchte ich das angewendete CSS aus dem Div entfernen. Wie könnte ich das in JQuery machen?
Antworten:
Fügen Sie Ihre CSS-Eigenschaften in eine Klasse ein und gehen Sie dann folgendermaßen vor:
Dann, wo Ihre "anderen Funktionen" sind, tun Sie etwas wie:
quelle
<div style="xxx"/>
ist immer noch CSS ... es ist keine sehr gute Art, es zu tun, aber es funktioniert.addClass
oderremoveClass
oderremoveAttr('style')
wie in der Antwort von @ ToRrEs verwenden.Sie können bestimmte CSS, die sich auf dem Element befinden, wie folgt entfernen:
Obwohl ich Karim zustimme, dass Sie wahrscheinlich CSS-Klassen verwenden sollten.
quelle
Sie können die removeAttr-Methode verwenden, wenn Sie den gesamten Inline-Stil löschen möchten, den Sie manuell mit Javascript hinzugefügt haben. Es ist besser, CSS-Klassen zu verwenden, aber Sie wissen es nie.
quelle
.css('style-name', 'style-value')
Funktion von jQuery fügt einem Element Inline-Stile hinzu - und ist für die schnelle Aktualisierung von Stilen unerlässlich. Ein Drag & Drop-Skript kann dietop
undleft
Stile eines absolut positionierten Elements ändern - eine Instanz, in der die Verwendung von Klassen unpraktisch ist.Sie können Inline-Eigenschaften folgendermaßen entfernen:
Beispielsweise:
Dies ist im Wesentlichen oben erwähnt, und es macht definitiv den Trick.
Übrigens ist dies in Fällen nützlich, in denen Sie beispielsweise nach der Animation einen Status löschen müssen. Sicher könnte ich ein halbes Dutzend Klassen schreiben, um damit umzugehen, oder ich könnte meine Basisklasse verwenden und #id etwas rechnen und den Inline-Stil löschen, den die Animation anwendet.
quelle
ODER
quelle
Abhängig von der Eigenschaft können Sie sie möglicherweise auf auto setzen.
quelle
Legen Sie den Standardwert fest, zum Beispiel:
$ (this) .css ("height", "auto");
oder im Fall anderer CSS-Funktionen
$ (this) .css ("Höhe", "erben");
quelle
Eigentlich ist dies der beste Weg, dies zu tun, wenn ich ein komplexes jquery-basiertes Styling durchführen muss, zum Beispiel, wenn Sie ein Modal haben, das Sie anzeigen müssen, aber Seitenversätze berechnen müssen, um die richtigen Parameter zu erhalten, die benötigt werden die Funktion a jQuery ("x"). css ({}).
Hier ist also die Einstellung der Stile, die Ausgabe von Variablen, die basierend auf verschiedenen Faktoren berechnet wurden.
Um diese Stile zu löschen. anstatt so etwas zu setzen
Der einfache Weg wäre
Wenn jquery Elemente auf dem Dom bearbeitet, werden die Stile in das Element im Attribut "style" geschrieben, als würden Sie die Stile inline schreiben. Alles, was Sie tun müssen, ist, dieses Attribut zu löschen, und das Element sollte auf seine ursprünglichen Stile zurückgesetzt werden
Hoffe das hilft
quelle
Ich habe das gleiche Problem auch, entfernen Sie einfach den Wert
quelle
Wenn Sie keine Klassen verwenden möchten (was Sie wirklich sollten), können Sie nur das erreichen, was Sie möchten, indem Sie zuerst die sich ändernden Stile speichern:
quelle
Ich habe die zweite Lösung von user147767 verwendet
Hier gibt es jedoch einen Tippfehler. Es sollte sein
nicht <= 0
Ich habe diese Bedingung auch geändert für:
Manchmal fügen wir über jQuery eine CSS-Eigenschaft hinzu, die für verschiedene Browser auf unterschiedliche Weise hinzugefügt wird (dh die Eigenschaft border wird für Firefox als "border" und für IE als "border-top", "border-bottom" usw. hinzugefügt ).
quelle
Bevor Sie eine Klasse hinzufügen, sollten Sie überprüfen, ob bereits eine Klasse mit der Methode .hasClass () vorhanden ist
Für Ihre spezielle Frage. Sie sollten Ihre Sachen in Cascading Stylesheet legen. Es wird empfohlen, Design und Funktionalität zu trennen.
Daher ist die vorgeschlagene Lösung zum Hinzufügen und Entfernen von Klassennamen eine bewährte Methode.
Wenn Sie jedoch Elemente bearbeiten, können Sie nicht steuern, wie sie gerendert werden. removeAttr ('style') ist die BESTE Methode, um alle Inline-Stile zu entfernen.
quelle
Ich habe die Lösung von user147767 ein wenig geändert , um die Verwendung zu ermöglichen
strings
,arrays
undobjects
als Eingabe:http://jsfiddle.net/ARTsinn/88mJF/
quelle