3

我只是在阅读 jQuery .data() API 参考。事先,我推测它可能通过'data-*'为页面元素分配属性来工作;有效的捷径$('#foo').attr('data-foobar', 'bar')

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

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

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

(2)这是真的吗?

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

你会说最好使用.data('*','*')而不是.attr('data-*','*')在 jQM 应用程序的上下文中使用,所有内容都在一个 HTML 文件中,在 Cordova/PhoneGap 之上运行,在这种情况下只能localStorage用于额外的应用程序存储?

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

期待你的回答,是的。

4

1 回答 1

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

于 2012-06-18T16:28:33.610 回答