2012-01-08 45 views
15

我想訪問一個框架內的元素,但到目前爲止還沒有任何運氣。我在這裏閱讀了很多關於stackoverflow和jQuery文檔的示例,但是我所看到的所有示例都參考了與傳統框架行爲不同的iFrame。我的頁面結構與實際內容刪除如下圖所示:使用jQuery獲取框架內的元素

<html> 
<head></head> 
<frameset> 
<frame name="Menu"><html><body> 
    <!--Menu contents--> 
</body></html></frame> 

<frameset> 
<frame name="SettingsTree"><html><body> 
    <!--Setting options--> 
</body></html></frame> 
<frame name="SettingsGrid" id="SettingsGrid"><html><body> 
    <div id="findthis"></div> 
    <!--Setting grid values--> 
</body></html></frame> 
</frameset> 

</frameset> 
</html> 

的方式iFrame中得到「findthis」的內容將是

$('#SettingsGrid').contents().find('#findthis') 

然而,這並不返回任何東西。 $('#SettingsGrid')對象的長度爲1,我希望它具有所有的html。但是,當我在該對象上調用.contents()時,它不返回任何內容。我不知道這是因爲它沒有正確加載到DOM中,或者是否存在其他問題。

回答

0

你試過$('#findthis', $('#SettingsGrid'))

外部jQuery中的第二個參數是第一個參數引用搜索的上下文。當沒有給出第二個參數時,它默認是根。

+0

我認爲這會工作,因爲如果你在SettingsGrid的情況下,你應該能夠找到元素,但也許幀是造成這失敗。謝謝你的想法。 – 2012-01-08 19:23:32

+1

這不起作用,至少使用iframe。 – Sire 2013-07-10 13:54:24

1

這個工作對我來說,如果該框架有一個名稱,以及作爲ID:

$('#frame_id',top.frames["frame_name"].document) ... 
1

我使用jQuery 1.11.1的IE8/IE11企業模式的最佳工作解決方案是:

$('#findthis', $('#SettingsGrid')[0].contentWindow.document) 
0

對我來說,這樣做的好方法是按類找到一個框架,並使用jquery的prop()方法和contentwindow。不幸的是,在這個框架中必須由一些爲你完成一項任務的功能來聲明,例如findAndsubmitForms()方法。

父窗口:

$('.frameClass or #id or so').prop('contentWindow').findAndSubmitForms(); 

子窗口(幀):

function findAndSubmitForms(){ 
    $('form').submit(); 
    } 

如果這是不可能通過定義像這樣來聲明內部幀這樣的方法,當然這是可以做到:

$('.frameClass').prop('contentWindow').findAndSubmitForms=function(){...}; 

,比撥打我們所需的功能:d

有一個不錯的一天,希望您有一個偉大的時間在看屏幕:d