0

重複の可能性:
jqueryはiframeの子を選択します

asp.netWebサイトに多くのフレームがあります。そのレイアウトがわからず<span>、jqueryコードがある別の異なるフレームの値を更新する必要があるため、次のようにします。

$('#myspan').text('sometext');

しかし、何かが変わります。そのため、jqueryがスコープ内にないためにこのセレクターで要素をキャッチできなかったためか、その理由がわかりません。

しかしこれ:

alert($('#myspan'));[object][object]結果としてアラートが表示されます。

4

2 に答える 2

3

jQuery関数($('someSelector'))は、セレクターに一致する要素がない場合でも、常にオブジェクトを返します。

実際に複数のフレームを使用している場合は、問題があります。ターゲットにする特定のドキュメントに適切なコンテキストオブジェクトを渡さない限り、jQueryは現在のドキュメント/フレームでのみ要素をフレーム間で見つけることができません。

たとえば、がある場合は、次のようにしてその中<iframe id="myframe">を探すことができます。#myspan

var frameDoc = $('#myframe')[0].contentWindow.document;
var mySpan = $('#myspan', frameDoc);

これを機能させるには、iframeのソースをメインページと同じドメインでホストする必要があります。以下のコメントで提案されている、次のよりクリーンなオプションもあります。

var mySpan = $("#myframe").contents().find('#myspan')

また

var mySpan = $('#myspan', $("#myframe").contents());
于 2013-01-04T17:03:15.103 に答える
1

jQueryの問題をデバッグする良い方法は、次のパターンです。

var e = $(...);
console.log(['Explanation', e.get()]);

get()引数がないと、奇妙なjQueryセレクターの結果が、ブラウザーのコンソールで展開できる通常のJavaScript配列に変換されます。これは、セレクターが何を返したかを確認するのに役立ちます。

何にも一致しない場合は、セレクターが間違っています。要素が実際に存在する場合は、ブラウザの開発ツールで現在のDOMを確認してください。

于 2013-01-04T17:06:14.333 に答える