我刚刚阅读了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
可用于应用外存储空间?
具体,是的。有点肛门,是的。
期待你的回答,是的。
答案 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