2012-08-27 37 views
0

我在頁面上有幾個iframe s。裏面有一些類名爲test的元素。我需要爲他們設置任何style帶內部iframe中的類的元素

當我只有一個iframe,我可以用接下來的建設:

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

但我有幾個iframe S,所以這將是巨大的未設定具體的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工作。

+0

你試過'$( 'iframe中')的內容()找到...' – Shmiddty

+0

是的,沒有幫助。( '測試')。 – Halfist

+0

嘗試一個$ .each循環! – adeneo

回答

1

你應該嘗試一些這樣的事

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

希望這會幫助你。

+0

它有幫助!非常感謝! – Halfist

1

您可能會遇到以下兩個問題之一: 1)您通常無法修改從外部域返回的iFrame的內容,雖然在此情況可能不是這樣。如果你的iframe指向你的域名,你應該沒問題。 2)ie8知道jQuery的.css可能依賴的「innerHTML」屬性的問題。相反,嘗試使用DOM方法:

document.getElementById("yourIframe").contentWindow.document.body.getElementById("innerIframeElement").setAttribute("style", "background:'#f00';"