1

我正在使用 .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丢失或无法从框架外部访问。

关于如何解决这个问题的任何建议?

4

1 回答 1

1

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

为了解决这个问题,使用原始的 jQuery 对象:

myOrigWindow.jQuery('some-selector').data(...);
于 2012-10-12T10:36:15.873 回答