从iframe中访问父窗口元素(jQuery)

7

我有几个动态创建的 div,里面包含相同的元素:

<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>

...

同时,在iframe中还有一个表单,看起来类似于这样:

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

我的jQuery函数如下:
$(".class_input").change(function() {
    $(this).closest("form").submit();
});

在提交表单时,我希望执行其他操作,这些操作作用于父窗口中与表单具有相同 id 的 div 中包含的元素。为了获取父 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());

返回 null 而不是 "这里有一些文本"。

你的调试器是否出现了错误信息?你可能没有权限访问。 - jerone
1个回答

2
尝试将代码修改为以下内容:
var parent_div = $("div#"+$(this).closest("form").attr("id"), parent.document);
alert(parent_div.children('.element_1').text());

我进行了一个快速的测试,一切都正常。

编辑:解释

问题在于您试图将parent_div作为字符串引用,而实际上它是一个独立的jQuery对象。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接