我读过here,您无法在每个jqMobile页面上使用$(document).ready()
。相反推荐使用pageInit()
和pageCreate()
。这一切都很好,但我不太清楚如何执行它。如何将页面特定的逻辑添加到jQuery Mobile?
比方说,我有一个所有导致单独报告的URL列表。每个报告都会在页面加载时发生各种各样的事情。
我是否必须将所有页面逻辑放入主页面?
这是一个通用的问题,但我会给出一个具体的例子,我正在尝试做什么。
一个MVC3 Layout
页面有我的头元素与所有脚本引用。
然后,我有我的索引页:
<div data-role="page" data-add-back-btn="true">
<div data-role="content">
<div class="content-primary">
<ul data-role="listview" data-theme="a">
<li data-role="list-divider" data-theme="a">Category 1</li>
<li><a href="someUrl" data-transition="slideup">Link 1</a></li>
</ul>
</div>
</div>
然后我报告一个单独的登陆页面:
<div data-role="page" data-add-back-btn="true">
<div data-role="header" data-theme="a">
<h1>Report 1</h1>
<a id="btnOpts" data-icon="gear" class="ui-btn-right" data-rel="dialog" data-transition="pop">Options</a>
</div>
然后我还有最后一个页面,我的选择对话框:
<div id="dlgOpts" data-role="page" data-theme="a">
<div data-role="content">
<h2>Please select the report options:</h2>
<div data-role="fieldcontain">
<label for="startDate">Start Date:</label>
<input type="date" id="startDate" data-role="datebox" data-options='{"mode": "datebox"}' />
</div>
<div data-role="fieldcontain">
<label for="endDate">End Date:</label>
<input type="date" id="endDate" data-role="datebox" data-options='{"mode": "calbox"}' />
</div>
<div class="ui-grid-a">
<div class="ui-block-a"><a href="#" data-icon="back" data-role="button" data-rel="back">Cancel</a></div>
<div class="ui-block-b"><a href="#" data-icon="check" data-role="button" data-rel="back">Ok</a></div>
</div>
</div>
我的目标是从列表中加载报告,并在加载报告时显示选项对话框。如果我把它放在页面内部,它总是循环回选项,因为它在对话框关闭时触发(我猜这是它下面的页面的完整重新加载?)。
所以简而言之:当我的报告页面加载时,如何加载对话框,然后在选项对话框关闭时执行?在此先感谢您的帮助!
将所有的JavaScript在你的索引或什么都页加载第一 –