2012-01-29 17 views
6
// create a style element 
$("#main").html('<style id="custom_persona_css"></style>'); 

$("#custom_persona_css").append('#abc{ color:#000000; }'); 

これはIE8ではうまくいきません!IE8にスタイルを挿入するにはどうすればよいですか?

どうすればIE8で動作させることができますか?誤差があります

:IE8は有効なHTML(ABC部分を)認識しないため、「メソッドやプロパティへのアクセスに予期しないコール」

答えて

4

<style/> -elementに関連するスタイルシートオブジェクトのcssText-プロパティを設定します。

$('<style id="custom_persona_css"></style>').appendTo('head'); 

    if($.browser.msie) 
    { 
    $("#custom_persona_css").prop('styleSheet').cssText='#abc{ color:#000000; }'; 
    } 
    else 
    { 
    $("#custom_persona_css").append('#abc{ color:#000000; }'); 
    } 

http://jsfiddle.net/doktormolle/BLJUv/

詳細情報:http://msdn.microsoft.com/en-us/library/ie/ms533698%28v=vs.85%29.aspx

+0

+1 - 素敵な小さなナゲット私は未来のために離れていきます。 – mrtsherman

+0

スコア。私はなぜ人々がこれを全部投票しなかったのか分かりません。これは私のニーズに100%適合しています。ありがとう! – TIMEX

0

あなたはjQueryのを使用している、とjQueryはの巨大なライブラリを持っています動的要素のスタイルを変更するための方法:上記

$(selector).css(propertyName, value); 

$(selector).propertyName(value); 

は、セレクタによって識別される要素の要素またはグループのスタイルに影響を与えるのjQueryの使用のちょうど2つの例です。

このように、ID =「ABC」を持つ要素の色を変更するには、次のように動作します:

$('#abc').css('color','#000000'); 

をさらに、あなたがテーマに要素の要素またはグループを探しているなら、あなたができます異なるclassNamesのスタイルを概説するstyle.cssファイルを作成します。

のstyle.css:

.custom_persona { 
    color:#000000; 
} 

.some_other_custom_style { 
    color:red; 
    background-color: #fff; 
} 

のindex.htmlスクリプト:

$('#abc').addClass('custom_persona'); 

// OR 

$('#abc').addClass('.some_other_custom_style'); 
$('#abc').removeClass('custom_persona'); 
次に、あなたは、単にそのような要素(複数可)へのクラス名を追加または削除して、スタイルを適用することができます

jQuery CSS category of methods and propertiesは、どのようなプロパティが利用可能であるかという点でより詳細に説明されています。 IE8の問題を解決するだけでなく、これは他の主要なブラウザでもうまくいきます。

+1

私はこれを行うことができません。ユーザーはルールを定義し、ルールを適用するためです。彼らは石になっていない。 – TIMEX

+0

ユーザーがスタイルを定義するのはどういう意味ですか?ユーザーがスタイルを定義していても、上記のテクニックの1つを使用してスタイルを適用できるはずです。これを試したことはありませんが、動的CSSファイルとしてこれらのユーザ提供スタイルを動的に生成し、HEADセクション 'var i = $( 'link')に追加することができます。attr(" href "、" /userGenerated.php?userId=555 "); $( 'head')。appendChild(i);'この場合、userGenerated.phpはスタイルをファイルまたはデータベースから取得します。 – jmort253

4

私はjmort253にスタイル属性を直接変更したり、CSSファイルを読み込んだりするのが一番良いと同意します。より効率的なaddClassメソッドとremoveClassメソッドを使用できます。つまり、スタイル要素は頭の中にあるはずです(彼らは当然本体で動作しますが、私が思い出したようにofficiallyはサポートされていません)。だから、そのようなことをすることができます。

http://jsfiddle.net/TCUxx/1

$('head').append('<style type="text/css">#abc{ color:#ff0000; }</style>'); 

更新 - これは動作しません何らかの理由で。どうしてか分かりません。 IE9で動作します。

var $styleElement = $('<style />', { 
    type: 'text/css', 
    text: '#abc{ color:#ff0000; }' 
}); 

$('head').append($styleElement); 
+0

+1まさに私が考えていたもの。確認していただきありがとうございます! – jmort253

+0

@mrtsherman:これはあなたのIE8で動作しますか? –

+0

@ Dr.Molle - 実際にはありません。いいえ、それはありません。なぜ私は考えていない。あなたがちょうどコードを打ち込むなら、それは動く(私の答えを変えた)。あなたの答えに示唆されているようにcssTextを設定しようとしましたが、うまくいきませんでした。 – mrtsherman

0

この作業を行います。MSIEで

var $style = $("#custom_persona_css"); 

$style.html(
    $style.html() + '#abc{ color:#000000; }' 
); 

それとも

$("#custom_persona_css")[0].innerHTML += '#abc{ color:#000000; }' 
関連する問題