jQuery的.data()缓存是否会在jQuery mobile中的页面转换中持续存在?

时间:2012-06-18 14:54:02

标签: jquery jquery-mobile cordova local-storage

我刚刚阅读了jQuery .data() API reference。在此之前,我推测它可能通过为页面元素分配'data-*'属性而起作用;实际上是$('#foo').attr('data-foobar', 'bar')的快捷方式。

(1)想象一下,它确实像这样工作,虽然它似乎没有,你从一个jQuery Mobile页面切换到另一个然后再回来,'data-*'属性仍然附加到元素,或者jQM是否从下载的HTML中有效地重新加载?

然而,在参考文献中,页面上的第一条评论指出:

  

数据未存储在元素上。它实际上存储在$.cache - “Alex”

(2)这是真的吗?

(3)这是否会在jQM页面转换中持续存在?如果我点击第2页并询问$('#bar').data('foo'),其中#bar是第1页的div,那么会发生什么?

您是否认为最好在jQM应用的上下文中使用.data('*','*')而不是.attr('data-*','*'),所有内容都在一个HTML文件中,在Cordova / PhoneGap的顶部运行只有localStorage可用于应用外存储空间?

具体,是的。有点肛门,是的。

期待你的回答,是的。

1 个答案:

答案 0 :(得分:3)

如果您使用多页模板,在单个文档中有多个data-role="page"元素,那么数据将通过转换持续存在。这是因为所有页面都始终在DOM中,并且永远不会从DOM中删除它们。

现在,当您通过AJAX引入伪页面时,情况就不同了。当您链接到远程页面时,jQuery Mobile通过AJAX抓取页面,然后将其转换为视图。默认情况下,当您离开该页面时,它将从DOM中删除以节省内存。删除页面时,其数据也是如此。您可以通过在任何外部data-cache="true"元素上设置data-role="page"属性来停止此行为。

文档:http://jquerymobile.com/demos/1.1.0/docs/pages/page-cache.html