2017-04-02 4 views
0

CSS規則を永続的に変更したい(新しい要素がこのCSS規則を引き継ぐように)。動的に作成された要素の永続的なCSS規則の変更

https://jsfiddle.net/Lvm0c7m6/

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

をここに私のバイオリンを参照してください:(言ってやるが、彼らが作成されるときに存続していない将来の要素の背景色を変更する)持続しませんCSSを使用して、すべてのjqueryの変更があること表示されます今後のすべての要素がCSSによって作成された新しいルールを持つようにしたいと思っています。これを行う方法があります(良いクロスブラウザサポートがあります)。

+0

すると、それは同じ重量を運ぶことはありません。 JavaScriptの大半はイベント駆動型であり、機能のタイムスパンの中ではすべてが生きています。またはセッション。ブラウザが別のページ、ディレクトリ、サイトなどに変更されると、元の場所からのJavaScriptのほとんどまたはすべてがガベージコレクションされます。スタイルシート、スタイルブロック、またはスタイル属性に対して直接的または間接的に行われた変更はすべて一時的です。エディターで文書に加えられた変更は永久的です。 – zer00ne

答えて

2

実行時にjavascriptを実行して、クラス 'red'を持つすべての要素にインラインスタイルを追加し、青色にします。その後、新しい要素を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

頭の中のルールを単に新しいものに置き換えるreplaceメソッドがありますか? – shell

関連する問題