我在我的页面中有一个iframe,我想通过选择带有“data-attribute”的目标来移动元素,所以我想这样做:
var ifr = frames [‘myiframeID’]。document;var element =‘#idofdiv’;var …
注意:正如你所说,你确实满意 同源政策 所以在理论上你应该能够访问和操作从属IFRAME DOM。
它不起作用的原因是选择器的工作方式。如果两个元素都应该在与代码运行的框架不同的框架内,那么它们都需要选择它们的父框架。你的代码没有。仅正确选择了要插入的元素,但目标数据属性引用元素的选择器未正确选择。
$(element, ifr).insertBefore('[data-my-attribute="'+destination+'"]'); // ^ correct ^ incorrect
根据jQuery文档,您不能简单地将父元素添加到 insertBefore 功能调用。
insertBefore
因此,这应该工作:
var el = $(element, ifr); var ref = $('[data-my-attribute="'+destination+'"]', ifr); el.insertBefore(ref); // or ref.before(el);
这应该按预期工作。