从另一帧中的对象获取.data()

时间:2012-10-12 09:59:52

标签: javascript jquery

我正在使用.data()将对象实例存储到DOM元素。这在我所在的框架内工作,但由于我正在处理的应用程序中的规则,所有jQuery对话框都使用iframe填充。出于某种原因,我似乎无法从框架外部访问.data()存储的对象。我怎么能访问它?

我的代码存储对象(CodeMirror实例)。

$('#MyTextArea').data('CodeMirrorEditor', editor);(其中editor是实例)

当我想访问它时,我正在使用:

var context = document.getElementById('DialogFrame').contentWindow.document);
console.log($('#MyTextArea', context);
console.log($('#MyTextArea', context).data('CodeMirrorEditor'));

第一个日志会导致textarea被记录。这是正确的,因为所引用的ID是<textarea>。 第二个日志导致undefined。由于某种原因,存储的editor实例丢失或无法从框架外部访问。

有关如何解决此问题的任何建议吗?

1 个答案:

答案 0 :(得分:1)

您的问题不在于上下文,而在于jQuery对象本身。 由于data()属性是在原始页面中定义的jQuery对象中设置的,因此新的jQuery对象无法访问它们。

要解决此问题,请使用原始jQuery对象:

myOrigWindow.jQuery('some-selector').data(...);