我正在使用.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
实例丢失或无法从框架外部访问。
有关如何解决此问题的任何建议吗?
答案 0 :(得分:1)
您的问题不在于上下文,而在于jQuery对象本身。 由于data()属性是在原始页面中定义的jQuery对象中设置的,因此新的jQuery对象无法访问它们。
要解决此问题,请使用原始jQuery对象:
myOrigWindow.jQuery('some-selector').data(...);