2009-11-20 5 views
5

JavaScriptを使用してインラインCSSをオーバーライドできますか? とIE6互換JavaScriptからインラインCSSをオーバーライドする方法は?

私はこの純粋なCSSソリューションを見つけましたが、IEでは動作しません。

http://nataliejost.com/override-inline-styles-from-the-stylesheet/

http://www.sitepoint.com/blogs/2009/05/27/override-inline-css/

<div class="block"> 
    <span style="font-weight: bold; color: red;">Hello World</span> 
</div> 

我々は

.block span[style]{ 
    font-weight: normal !important; 
    color: #000 !important; 
} 

この溶液でIE6を除くすべての主要なブラウザでこのソリューションの作業をこのインラインスタイルを上書きすることができます。たとえば次のようなHTML持っているのであればhttp://docs.jquery.com/CSS/css#namevalue

<p style="color:red;">A colored text</p> 

をあなたはjQueryの中で次の作業を実行して、色を変更することができますが、jQueryのCSS()メソッドを使用してすることができます。もちろん、

+0

[解決]タイトルの後ろに、SO上で削除します質問が最終的に解決されることはありませんが、常により良い選択肢または注目すべき変種が存在する可能性があります。結局、SOはwikiです。 – markus

+0

この情報はありがとうございます。私はこの事を知らなかった –

答えて

14

$("p").css("color","blue"); 

IE6で動作します。

+0

クール!ありがとう非常に –

+0

とこれを行うための任意の純粋なCSSソリューションです –

+0

jQuerysのcss()は、実際にインラインCSSをDOMに追加します。それ以外の方法で、CSSを使ってjQuery Css()をオーバーライドするのは難しいです(IE6では重要ではありませんが動作します) – David

3

!importantはIE6で動作しますが、セレクタspan[style]は選択できません。属性セレクタはサポートされていません。オーバーライドするスパンを選択する別のセレクタが見つかった場合、正常に動作します。おそらくちょうど.block spanで十分でしょうか?あなたが絶対に持っている場合

そうでない場合は、はい、あなたは、JavaScriptからそれを変更することができます(あなたがマークアップを制御することはできません?):

span.style.fontWeight= 'normal'; 
span.style.color= 'black'; 
関連する問題