如何在iframe中找到div

时间:2011-01-05 09:57:45

标签: jquery iframe

我正在尝试使用jquery在iframe中查找div。有没有比我下面使用的更好的方式?

$('#Iframe').contents().find('#MyDiv')

function atmslidein(){
   $("#customer").ready(function(){         
       if($('#customer').attr('src')=='ATM.html')
       {
          $('#customer').contents().find('.atm_page').css('margin-left', '270px'); 
          $('#customer').contents().find('.tele').css('display', 'none');
       }
    })
}

我已经尝试了将近一周时间来完成这项工作:

$('#Iframe').contents().find('#MyDiv')

这就是为什么我尝试了另一种方式来访问iframe的div。


无论如何,我发现了iframe文档应该具有的内容,只有上述功能才能正常工作:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

我的问题解决了,谢谢。 但有人可以解释为什么这是必要的吗?

3 个答案:

答案 0 :(得分:13)

我认为jQuery不能以这种方式访问​​contentWindow / Document的内容。在过去,我必须这样做:

$('#iframe').each(function() {
    $('#MyDiv', this.contentWindow.document||this.contentDocument);
});

**请注意,this.contentWindow||this.contentDocument需要在IE和大多数其他浏览器上正常运行。获得内容窗口后,您需要选择文档。然后你可以使用jQuery来操作或遍历DOM,但前提是iframe的源位于同一个域中。

**更新以修复我们在获取contentWindow / Document后未指定文档的错误。

答案 1 :(得分:4)

这仅适用于Iframe源与您的网页位于同一个域中的情况,否则浏览器出于安全原因不会允许它

答案 2 :(得分:-1)

使用选择器上下文:

var frame = $('#frame_id');
var div = $('#mydiv', frame);