フレームの内側にある要素にアクセスしようとしていますが、これまでのところうまくいきません。私はここでstackoverflowとjQueryのドキュメントで多くの例を読みましたが、これまでに見た例はすべて、従来のフレームとは異なる動作をするiFrameを参照しています。私のページ構造は、実際のコンテンツが削除された以下のとおりです。
<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に適切にロードされていないためか、他に問題があるかどうかはわかりません。
これを試して:
$('#findthis', window.parent.frames[0].document)
またはトップレベルから:
$('#findthis', top.window.frames[0].document)
前の質問/回答を参照: 別のフレームのコンテキストでJQueryを実行
フレームに名前とIDがある場合、これは私にとってはうまくいきました:
$('#frame_id',top.frames["frame_name"].document) ...
JQuery 1.11.1を使用したIE8/IE11エンタープライズモードでの私の最も効果的なソリューションは次のとおりです。
$('#findthis', $('#SettingsGrid')[0].contentWindow.document)
私にとってこれを行うための良い方法は、クラスごとにフレームを見つけることであり、jqueryのprop()メソッドとcontentwindowを使用することでした。残念ながら、このフレームでは、タスクを実行する関数によって宣言する必要があります。 findAndsubmitForms()メソッド。
親ウィンドウ:
$('.frameClass or #id or so').prop('contentWindow').findAndSubmitForms();
子ウィンドウ(フレーム):
function findAndSubmitForms(){
$('form').submit();
}
フレーム内でそのようなメソッドを宣言することができない場合は、当然、次のように定義することで実行できます。
$('.frameClass').prop('contentWindow').findAndSubmitForms=function(){...};
そして、目的の関数を呼び出す:d
よい一日をお過ごしください。画面をご覧ください。D
$('#findthis', $('#SettingsGrid'))
を試しましたか?
外側のjquery内の2番目の引数は、最初の引数によって参照が検索されるコンテキストです。 2番目の引数を指定しない場合、デフォルトでルートになります。