jQuery-Mobile 版本 1.4.0 alpha 2 中的一个新功能是面板不再必须位于使用它们的页面内。相反,外部面板可以是页面的兄弟。
这适用于静态页面:
<div id="panel" data-role="panel" data-theme="b" data-position="left"
data-display="push">
<h3>This is a panel</h3>
</div>
<div data-role="page" id="staticPage">
<div data-role="header" data-position="fixed">
<a href="#panel">Panel</a>
<h1>Static page</h1>
</div>
<div data-role="content">
<div class="content-primary">
<a href="#dynamicPage" data-role="button" data-inline="true">Go to dynamic page</a>
</div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function () {
$('#panel').panel();
});
</script>
但是,当我动态生成和注入页面时,面板的链接不再按预期工作:
<script type="text/x-template" id="dynamicPageTemplate">
<div data-role="page" id="staticPage">
<div data-role="header" data-position="fixed">
<a href="#panel">Panel</a>
<h1>Dynamic page</h1>
</div>
<div data-role="content">
<div class="content-primary">
<a href="#staticPage" data-role="button" data-inline="true">
Go to static page
</a>
</div>
</div>
</div>
</script>
<script type="text/javascript">
$(document).bind("pagebeforechange", function (e, data) {
if (typeof data.toPage === "string") {
var url = $.mobile.path.parseUrl(data.toPage);
if (url.hash.search(/^#dynamicPage$/) !== -1) {
$('#dynamicPage').remove();
var template = $("#dynamicPageTemplate").html();
var $page = $(template);
$page.attr('id', 'dynamicPage');
$('body').append($page);
$page.page();
$.mobile.changePage($page, {changeHash: false});
e.preventDefault();
}
}
});
</script>
当我单击动态页面标题中的“面板”按钮时,URL 更改为…#panel
并且没有显示任何内容。我怀疑 jQuery-Mobile 试图将面板显示为页面而不是面板。我做错了什么,还是这是一个错误?