2017-04-02 97 views
0

我想永久修改css規則(以便新元素將採用此css規則)。看來,用css不堅持(說改變了未來元素的背景色被創建時就不會繼續下去)所有jQuery的修改:動態創建元素的持久css規則更改

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

見我的小提琴這裏:

https://jsfiddle.net/Lvm0c7m6/

我希望所有將來的元素現在都有由css創建的新規則,是否有辦法做到這一點(具有良好的跨瀏覽器支持)。

+0

當你說「永久」,因爲它在時間的現實世界確實不攜帶相同的重量。大多數JavaScript都是事件驅動的,幾乎所有的事情都在一個函數的時間範圍內。或會話。當瀏覽器更改爲另一個頁面,目錄,網站等時,來自以前位置的大部分或全部JavaScript都會被垃圾收集。對樣式表,樣式塊或樣式屬性直接或間接進行的任何更改都是臨時性的。使用編輯器對文檔所做的更改是永久性的。 – zer00ne

回答

2

您可以在執行時命令javascript將內聯樣式添加到類'紅'的所有元素,並將它們着色爲藍色。之後,您將新元素添加到DOM。他們不知道早先的命令,因此不受他們的影響。

這樣可以解決您的問題,因爲這會將樣式規則添加到文檔中。這會影響所有的元素,是「老大難」:

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

參見:https://jsfiddle.net/aLghL2ke/

注意,如果你要多次運行此命令,它會很高興從您的代碼中刪除舊的樣式塊。這可以用jQuery也使用這個命令來完成:

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

參見:https://jsfiddle.net/4duxsz0a/

+0

謝謝,如果我多次這樣做(最多100次,但可能不是這麼多),這會不會造成問題?我想我所說的是重寫規則,還是將另一個.red樣式規則添加到樣式表中?我認爲這是你的編輯回答,謝謝。 – shell

+0

它增加了規則。這是低效的,但不太可能導致任何問題。 – JoostS

+0

是否有一種替換方法可以簡單地用新的替換頭部中的規則? – shell