jQuery セレクターは他のウィンドウの要素を自然に選択しません。他のウィンドウの jQuery にアクセスしてその DOM を照会するか、他のウィンドウのドキュメントへの参照を渡して、jQuery が探しているものを見つけられるようにする必要があります。
最初のアプローチでは、iframe
のウィンドウ内の要素を 内の jQueryでクエリiframe
し、親ウィンドウの要素を親ウィンドウの jQueryでクエリします。
$(document).ready(function () {
$("#scrollsetting").click(function () {
window.parent.$('#quickmenu').toggle(300);
});
});
フィドル
ただし、常に jQuery を 2 回ロードする必要があるわけではないため、親ウィンドウにロードしたとしましょう。その後、コンテキスト セレクターを使用して親の jQuery を現在の に設定することができますがdocument
、デフォルトは親ウィンドウのドキュメントに設定されます。省略時:
var $ = window.parent.$;
$(document).ready(function () {
$("#scrollsetting", document).click(function () {
$('#quickmenu').toggle(300);
});
});
フィドル
同様に、何らかの理由で子ウィンドウだけに jQuery を使用する場合は、親ウィンドウのドキュメントを参照するときにコンテキスト セレクターを使用します。
$("#scrollsetting").click(function () {
$('#quickmenu', window.parent.document).toggle(300);
});
フィドル
ps。私のinject
ラッパーを気にしないでください。iframe
これは、コードのテキストをIIFE の形式で挿入する前に、読み取り可能な方法でコードを記述する方法にすぎません。文字列連結は暗黙的に を呼び出しますFunction.toString()
。
もちろん、フレーム化されたページに含まれる jQuery を絶対に必要とする他の依存関係/プラグインがある場合は、最も単純な最初のソリューション、またはより適していると思われるソリューションを使用できます。
ps2. あなたのページでこのコードを試すのに問題がある読者がいる場合は、 s が同じオリジン ポリシーiframe
の対象であることを思い出してください。つまり、のドメイン、プロトコル、またはポートが親ドキュメントのものと一致しない場合は にアクセスできません。逆の場合も同様です。iframe
src