默认情况下,jQuery Mobile 只加载外部文档中的第一个data-role="page"
或第一个元素。data-role="dialog"
该<head>
部分甚至被省略。
解决方法是将所有页面放入单个 HTML 文档中,或者将每个伪页面放入它自己的 HTML 文档中。
您可以编写一些代码来手动抓取外部文档中的所有伪页面:
HTML --
<a class="multi-page-link" href="some-external-document.html"></a>
JS——
//when a pseudo-page initializes this code will run
$(document).delegate('.ui-page', 'pageinit', function () {
//find elements tagged with the above class and bind to their `click` events
$(this).find('.multi-page-link').bind('click', function () {
//show the loading spinner
$.mobile.showPageLoadingMsg();
//create AJAX request for href of link
$.ajax({
url : this.href,
dataType : 'html',
success : function (response) {
//on successful response, find all the pseudo-page elements in the external document and append them to the `<BODY>`
var $pseudoPages = $(response).filter('[data-role="page"], [data-role="dialog"]').appendTo('body');
//now hide the loading spinner
$.mobile.hidePageLoadingMsg();
//and navigate to the first pseudo-page that was just added to the DOM
$.mobile.changePage($pseudoPages.eq(0));
},
error : function (a, b, c) { /*Don't for get to handle errors*/ }
});
return false;
});
});
我认为有一个插件可以解决这个问题,但我不知道它在哪里或者它是否被支持。