2017-04-02 4 views
0

Ich möchte eine CSS-Regel dauerhaft ändern (so dass neue Elemente diese CSS-Regel übernehmen). Es scheint, dass alle jquery Änderungen mit CSS nicht beibehalten (Say eine Hintergrundfarbe für die zukünftigen Elemente modifiziert besteht nicht, wenn sie erstellt werden):Permanente CSS-Regeländerungen für dynamisch erzeugte Elemente

$(".red").css("background-color", "blue"); 

meine Geige Siehe hier:

https://jsfiddle.net/Lvm0c7m6/

Ich möchte, dass alle zukünftigen Elemente jetzt die neue Regel von css haben, gibt es eine Möglichkeit, dies zu tun (mit guter Cross-Browser-Unterstützung).

+0

Wenn Sie sagen, „permanent“, ist es nicht das gleiche Gewicht tragen, wie es in der realen Welt der Zeit der Fall ist. Der Großteil von JavaScript ist ziemlich ereignisgesteuert und fast alles lebt innerhalb der Zeitspanne einer Funktion. oder Sitzung. Und wenn ein Browser zu einer anderen Seite, einem anderen Verzeichnis, einer anderen Site usw. wechselt, wird der größte Teil oder das gesamte JavaScript des vorherigen Standorts gesammelt. Änderungen an Stilen, die direkt oder indirekt in einem Stylesheet-, Stilblock- oder Stilattribut vorgenommen werden, sind temporär. Änderungen an einem Dokument mit einem Editor sind dauerhaft. – zer00ne

Antwort

2

Sie bestellen Javascript zur Ausführungszeit, um allen Elementen mit der Klasse 'rot' einen Inline-Stil hinzuzufügen und sie blau zu färben. Danach fügen Sie dem DOM neue Elemente hinzu. Sie kennen das frühere Kommando nicht und werden daher nicht von ihnen beeinflusst.

Dies löst Ihr Problem, da dies dem Dokument eine Stilregel hinzufügt. Dies beeinflusst alle Elemente und ist ‚persistent‘:

$("<style>.red { background: blue; }</style>").appendTo("body"); 

See: https://jsfiddle.net/aLghL2ke/

Beachten Sie, dass, wenn Sie diesen Befehl mehrmals ausgeführt werden soll, wäre es schön, den alten Stil Block aus dem Code zu entfernen.

$("body style").remove(); 

See: Dies kann mit jQuery auch mit diesem Befehl ausgeführt werden https://jsfiddle.net/4duxsz0a/

+0

Danke, wird das jemals ein Problem verursachen, wenn ich das viele Male mache (maximal 100 mal, aber wahrscheinlich nicht so viele). Ich nehme an, was ich sage, ist dies die Regel neu schreiben oder eine andere .red Stilregel auf das Stylesheet hinzufügen? Ich denke, das wird durch deine Bearbeitung beantwortet, danke. – shell

+0

Es fügt die Regel hinzu. Das ist ineffizient, führt aber kaum zu Problemen. – JoostS

+0

Gibt es eine Ersatzmethode, die einfach die Regel im Kopf durch eine neue ersetzt? – shell

Verwandte Themen