2012-02-05 28 views
7

içimde aynı elemanları ile çok sayıda dinamik olarak oluşturulan div'leri vardır:erişme elemanları (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> 

... 

Ve böyle bir şey olmazdı iframe içinde bir formu vardır:

<form id="(dinamic_id)" > 
    <input class="(class_input)" /> 
</form> 
Ve benim jquery işlevi:

Ben EXECUT isteyen diğer işlemler vardır
$(".class_input").change(function() { 
    $(this).closest("form").submit(); 
}); 

e, üst pencerede, formda aynı kimliği paylaşan div içinde bulunan öğeler üzerinde gönderin. Böyle üst div içinde html almalıyım:

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

Ama örneğin div içindeki unsurlara alınamıyor:

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

veya

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

"Bazı metinler" yerine null değerini döndür. Aşağıdaki kod değiştirerek

+0

Hata ayıklayıcısını hata mesajı verdiniz mi? Bunun haklarına sahip değilsiniz. – jerone

cevap

2

Dene:

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

Ben hızlı testi benim sonunu hamile ve tüm güzel çalıştı.

Düzenleme: Açıklama

sorun aslında kendi üzerinde bir jQuery nesnesi olan bir dize olarak parent_div başvurmak çalışıyorlardı olmasıdır.

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

Aptal ben, o kadardı, teşekkürler! – Sandra