因此,我很难$.mobile.changePage正常工作。我这样称呼它:
$.mobile.changePage
$.mobile.changePage( "DataformsM-AddRecord.html", { transition: "slide"} );
但是由于某种原因,在加载HTML页面时,不包含任何外部.js(我编写的实际上用于执行某些操作的文件)。我遵循以下重要的加载约定
-Jquery -(CUSTOM JS) -Jquery Mobile
有谁知道为什么没有正确加载?另外,pageshow函数也不会被触发,这很奇怪。看起来像这样:
$("div[data-role*='page']").live('pageshow', function(event, ui) { loadFormFields(); });
现在,页面已呈现,但是没有任何功能发生。如果我入侵它并执行以下操作:
document.location.href="DataformsM-AddRecord.html";
它将正常运行。
jQuery Mobile不会将整个页面拉入dom,它会抓取第 一个 data-role="page"元素及其后代,并将其拉入当前dom。
data-role="page"
因此<head>,不会包含该文档中的任何脚本。
<head>
我通常将网站的所有功能JavaScript放在索引页面上,然后将外部页面加载到dom中时,它们可以从已经加载的脚本中受益。
另外,您可以将JavaScript代码放置在data-role="page"元素内,并且当jQuery Mobile完成页面的AJAX加载时,它将包含在其中。
更新
一个好的系统是将所有JS放入一个包含文件,并将其包含在站点的每个页面上。如果将页面通过AJAX引入DOM,则将被忽略,但是如果有人刷新了您网站中的某个位置,则JS将可用。