我试图将一些数据放入子窗口html标记中。但它似乎不起作用。我试着把它放在那个子窗口的一些jquery上,这很好。
以下是在父窗口中实现的将数据发送到子窗口的代码:
$(".something", fullscreen.document).data("data1", "whatever");
将返回" undefined"在子窗口中使用以下jQuery代码。
console.log($(".something").data("data1"));
但是当我使用子jQuery脚本存储数据时,它可以完美地运行:
$(".something").data("data1", "whatever");
不允许将十字窗口数据存储到标签中吗?
答案 0 :(得分:1)
jQuery不会使用DOMElement
保存数据,而是在范围内使用jQuery 实例。对于jQuery的两个实例,无论是在同一个文档(例如,jQuery的两个版本)还是在不同的文档中,都不会共享内部数据,也不能访问它。 / p>
您将始终需要使用与设置它相同的jQuery来检索数据。
如果要访问子数据中的数据,那么数据就是这样:
$(".something", fullscreen.document).data("data1", "whatever");
然后你需要这样做:
parent.window.$(".something", docmuent).data('data1');
答案 1 :(得分:1)
jQuery对您使用.data()
设置的数据使用自己的数据存储。 jQuery的每个实例(在每个窗口中)都有自己独立的数据存储,因此当从另一个调用时,你不会从一个获得结果。
如果您的数据只是一个字符串,那么您可能会发现更容易不用担心多个实例数据存储,只需使用.attr()
将字符串存储为DOM对象的实际属性。然后,关于存储位置或如何访问它的问题毫无疑问,因为它直接位于DOM对象上,您可以从jQuery实例轻松访问它。
// store data on the object
$(".something", fullscreen.document).attr("data-data1", "whatever");
// read data from within the target window
console.log($(".something").attr("data-data1"));
请注意使用HTML5 "data-xxx"
约定来避免任何属性命名与标准属性冲突。