3

$.mobile.pageContainer 指的是包含其他虚拟页面的元素。它设置为<body>。所以我认为它可以改变。实际上,一些 JQM 方法 (changePage) 允许您为页面指定非默认页面容器。JQM 文档缺少必要的细节。所以我的问题是:

  1. 您可以更改标记/代码中的默认页面容器吗?如何?
  2. 除了 之外,还有什么原因需要页面容器<body>
  3. 这是否意味着可以有多个页面容器,其中一些“页面”位于一个页面容器中,而其他“页面”位于其他容器中?你为什么想做这个?
4

1 回答 1

3

1 您可以将页面 div 放置在标记中的容器元素中。

2 我使用需要 FORM 元素的 ASP.Net Webforms,所以有时我将我的 jQM 页面添加到顶级 FOR​​M 而不是正文,从而允许我在单独的页面中使用 ASP.Net 控件,同时共享相同的 FORM 元素。

3 我认为您需要将所有页面保存在同一个容器中,否则页面之间的链接会中断。这是一个jsFiddle,容器中有 2 个页面相互链接。尝试将它们放在单独的容器中,您将看到链接停止工作。

<div id="PageContainer1">
    <div data-role="page" id="page1">
        <div data-role="header">
           <h1>My page 1</h1> 
        </div>
        <div data-role="content"> <a href="#page2" data-role="button">Go to Page 2</a>
        </div>
    </div>
<!-- insert separate container here 
</div>
<div id="PageContainer2">
-->
    <div data-role="page" id="page2" data-theme="a">
        <div data-role="header">
            <h1>My page 2</h1> 
        </div>
        <div data-role="content"> <a href="#page1" data-role="button">Go to Page 1</a>
        </div>
    </div>
</div>

更新:正如评论中所指出的,您当然可以通过 changePage 导航到其他容器中的页面,只是标准的 href="#page2" 链接中断。

    $.mobile.changePage("#page2", {"pageContainer": $("#Container2")});

我不确定拥有单独容器的用例,也许是代码组织?

于 2013-11-13T14:33:05.637 回答