2011-01-05 35 views
9

我正嘗試使用jquery在iframe中查找div。有沒有比我在下面使用的更好的方法?如何在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的股利。


無論如何,我發現東西的iframe文件應具有才把上述功能的正常使用:

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

我的問題就解決了,謝謝。 但有人可以解釋爲什麼這是必要的嗎?

+3

這有什麼錯呀? – lonesomeday 2011-01-05 09:59:22

+0

爲什麼不能'$('#IFrame #MyDiv')'? – 2011-01-05 10:02:51

+0

@Polybos這是一個不同的文檔,所以不會在該選擇器中找到。 – lonesomeday 2011-01-05 10:05:09

回答

13

我不認爲jQuery可以這種方式訪問​​contentWindow/Document的內容。在過去,我不得不這樣做:

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

**注意this.contentWindow||this.contentDocument需要跨越IE和大多數其他瀏覽器正常工作。一旦你獲得了內容窗口,你需要選擇文件。然後,您可以使用jQuery來操縱或遍歷DOM,但前提是iframe的源代碼位於同一個域中。

**已更新,以解決在我們獲取contentWindow/Document後未指定文檔的錯誤。

+1

這應該是'this.contentWindow.document',我想。 – lonesomeday 2011-01-05 10:14:36

+0

你是對的,謝謝。 – HackedByChinese 2011-01-05 10:19:09

+0

感謝您的解決方案。 但它在mycase中不工作 – rajaishbt 2011-01-05 11:54:52

4

這如果I幀的源代碼在同一個域中的頁面,如果不是瀏覽器不會允許出於安全考慮,

-1

使用選擇方面只會工作:

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

jQuery不能直接遍歷iframe的內容文檔,所以這不起作用。 – HackedByChinese 2011-01-05 10:23:38