我有一个单页模板页面 (page1.aspx
),它加载多页模板页面 (page2.aspx
)
多页面模板页面具有将内部页面显示为对话框的按钮。当 page1
通过默认 AJAX 行为加载 page2
时,page2 上的按钮不起作用。在浏览器中强制刷新 page2
可以让 page2 上的按钮正常工作。
如果我将 data-ajax="false"
添加到 page1 中的链接,一切都很好。
如何通过 AJAX 加载多页面模板页面,以便其上的按钮正常工作?
最佳答案
您无法通过 AJAX 链接到多页文档。仅第一个data-role="page"
元素将被导入到 DOM 中,其他所有内容都将被忽略(甚至 <head>
中的内容)。
如果您在没有 AJAX 的情况下链接到多页面模板,则将加载整个页面以及所有 data-role="page"
元素将可用。为此,您可以在特定链接上设置属性,如下所示:
<a hef="#" data-ajax="false">my link</a>
或者像这样:
<a hef="#" rel="external">my link</a>
您还可以像这样全局设置此选项:
<script src="jquery.js"></script>
<script>
$(document).bind('mobileinit', function () {
$.mobile.ajaxEnabled = false;
});
</script>
<script src="jquery-mobile.js"></script>
更新
我见过一个插件,可以让你做你想做的事,但我一直找不到它。它只是拉出所有 data-role="page"
来自多页文档的元素而不仅仅是第一个元素(在我看来,这会产生一些奇怪的深层链接问题)。
更新
哦,这是一个很好的:)
在 1.0 版中,jQuery Mobile 将允许您通过添加 data-prefetch="true"
来预取页面。链接的属性。如果您将多页面模板拆分为单独的页面,则可以预取它们,以便将它们添加到 DOM 中,并在单击它们的链接时“立即”显示(而不是等待 AJAX 请求解析) .
预取文档:http://jquerymobile.com/demos/1.0/docs/pages/page-cache.html
关于jQuery-Mobile:多页模板加载但已死,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8858808/