4

ページにいくつかiframeあります。test内部にクラス名を持つ要素がいくつかあります。私はstyleそれらに何かを設定する必要があります。

が1つしかない場合はiframe、次の構造を使用できます。

$('#iframeId').contents().find('.test').css({background: '#f00'});

しかし、私はいくつかを持っているiframeので、コンクリートを設定せず、次のiframeような構造を使用するのは素晴らしいことです:

$('.test').css({background: '#f00'});

もちろん、それは機能しません。

以前はネイティブを使用していましたが、欠陥が発生するでgetElementsByClassNameは機能しません。IE8

ばかげた質問かもしれませんが、..次のような構造はありますか?

$(getElementById('something')).css({background: '#f00'});

それは非常に役に立ちます。JavaScriptつまり、オブジェクトをラップしてから、メソッドをjQuery使用します。jQuery

更新:次の構造でこの問題を解決しました:

[].forEach.call(document.getElementById('something').querySelectorAll('.test'), function (el) {
    el.style.backgroundColor = '#f00';
});

しかし、それはまだ機能しませんIE8

4

2 に答える 2

4

このようなことを試してみてください

$("iframe").each(function(index){
   $(this).contents().find('.test').css({background: '#f00'});
});

これがお役に立てば幸いです。

于 2012-08-27T16:42:47.063 に答える
2

次の2つの問題のいずれかに遭遇している可能性があります。1)通常、外部ドメインから返されたiFrameのコンテンツを変更することはできませんが、ここではそうではない場合があります。iframeがドメイン内を指している場合は、問題ないはずです。2)ie8には、jQueryの.cssが依存する可能性のある「innerHTML」プロパティに関する既知の問題があります。代わりに、DOMメソッドを使用してみてください。

document.getElementById("yourIframe").contentWindow.document.body.getElementById("innerIframeElement").setAttribute("style", "background:'#f00';"
于 2012-08-27T16:42:57.630 に答える