4

iframe的页面上有几个s。其中有一些带有类test名的元素。我需要为style他们设置任何内容。

当我只有一个iframe时,我可以使用下一个构造:

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

但是我有几个iframes,所以最好不要设置混凝土iframe并使用如下结构:

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

但这当然行不通。

我以前用过native ,但在出现缺陷的地方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

您可能会遇到以下两个问题之一: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 回答