2012-02-05 28 views
7

私は内部の同じ要素と、いくつかのdinamically作成したdiv要素を持っている:IFRAMEから(jqueryの)を親ウィンドウの要素にアクセス

<div id="(dinamic_id_1)"> 
    <div class="(element_1)">Some text here</div> 
    <input class="(element_2)" /> 
    <iframe class="(element_3)" src="form.php?id=(dinamic_id_1)" /> 
</div> 

<div id="(dinamic_id_2)"> 
    <div class="(element_1)">Some text here</div> 
    <input class="(element_2)" /> 
    <iframe class="(element_3)" src="form.php?id=(dinamic_id_2)" /> 
</div> 

... 

そして、このようなものになりますインラインフレーム内のフォームがあります:

は、
<form id="(dinamic_id)" > 
    <input class="(class_input)" /> 
</form> 

そして、私のjQueryの機能:

$(".class_input").change(function() { 
    $(this).closest("form").submit(); 
}); 

私はステートメしたい他のアクションがあります。フォームと同じIDを共有するdiv内に含まれる要素について、親ウィンドウのサブミット時にeを返します。私はこのような親のdiv内のHTMLを取得するようになった:

var parent_div = $("div#"+$(this).closest("form").attr("id"), parent.document); 
alert($(parent_div).html()); 

をしかし、私は、たとえば、DIV内の要素を取得することはできません。

var parent_div = $("div#"+$(this).closest("form").attr("id"), parent.document); 
alert($(parent_div+" .element_1").html()); 

または

var parent_div = $("div#"+$(this).closest("form").attr("id")+" .element_1", parent.document); 
alert($(parent_div).html()); 

"Some text here"の代わりにnullを返します。

+0

デバッガーでエラーメッセージが表示されましたか?あなたはこの権利を持っていません。 – jerone

答えて

2

を次のようにコードを変更してみてください。

var parent_div = $("div#"+$(this).closest("form").attr("id"), parent.document); 
alert(parent_div.children('.element_1').text()); 

私は簡単なテストに私の終わりをノックし、すべてがうまく働きました。

編集:説明

問題は、あなたが実際にそれはそれ自身のjQueryオブジェクトであるとき、文字列としてparent_divを参照しようとしていたということです。

alert($(parent_div + " .element_1").html()); 
//  ([object] + [string] ) 
+0

愚かな私、それだった、ありがとう! – Sandra

関連する問題