我正在使用页面导航,为此我正在使用这样的 .live pageshow 事件
$('#watchlist').live('pageshow', function(event) {
watchList();
});
它给出了我期望的正确结果,但是如果我想在该模板上添加任何 javascript 文件,我可以这样做,以便我可以为特定模板使用其他功能。
我只想在该模板上加载带有 js 的动态模板,而不是索引页面上的所有 js 文件,因为它在某处发生冲突
我正在使用页面导航,为此我正在使用这样的 .live pageshow 事件
$('#watchlist').live('pageshow', function(event) {
watchList();
});
它给出了我期望的正确结果,但是如果我想在该模板上添加任何 javascript 文件,我可以这样做,以便我可以为特定模板使用其他功能。
我只想在该模板上加载带有 js 的动态模板,而不是索引页面上的所有 js 文件,因为它在某处发生冲突
这个答案是对评论的回应
“我只想使用不同的 html 页面进行页面导航,包括不同的 js 和 css 文件就是这样......”。
为了理解这个答案,让我们讨论一下 jQuery Mobile 是如何工作的。它使用 ajax 将其他页面加载到DOM
.
第一页正常加载。它的HEAD
和BODY
被加载到 中DOM
,它们在那里等待其他内容。加载第二页时,仅将其BODY
内容加载到DOM
.
这里有2个解决方案:
在您的第二页和其他所有页面中,将您的SCRIPT
和LINK
标签移动STYLE
到BODY
内容中,如下所示:
<body>
<script>
// Your javascript will go here
</script>
<link rel="stylesheet" href="some.css" />
// And rest of your HTML content
</body>
这是一个快速的解决方案,但对我来说这是一个丑陋的解决方案。
在您的按钮和用于更改页面的每个元素中使用rel="external" 。因为它不会使用 ajax 来加载页面,并且您的 jQuery Mobile 应用程序将表现得像一个普通的 Web 应用程序。
<a href="#second" class="ui-btn-right" rel="external">Next</a>
官方文档,找一章:Linking without Ajax。不幸的是,移动应用程序将因此失去页面转换。