页面转换问题
此代码在 Android Phonegap 项目中运行,使用它来修复您的代码:
HTML 1:
<!DOCTYPE html>
<html>
<head>
<title>jQM Complex Demo</title>
<meta name="viewport" content="width=device-width"/>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
<script type="text/javascript" src="http://www.dragan-gaic.info/js/jquery-1.8.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
<script>
$(document).on('pagebeforeshow', '#index', function(){
$(document).on('click', '#slide-me', function(){
$.mobile.changePage( "second.html", { transition: "slideup" });
});
});
$(document).on('pagebeforeshow', '#page-3',function () {
alert("Second page");
});
</script>
</head>
<body>
<div data-role="page" id="index">
<div data-theme="a" data-role="header">
<h3>
First page
</h3>
</div>
<div data-role="content">
<a data-role="button" id="slide-me">Slideup</a>
</div>
</div>
</body>
</html>
HTML 2:
<!DOCTYPE html>
<html>
<head>
<title>jQM Complex Demo</title>
<meta name="viewport" content="width=device-width"/>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
<script type="text/javascript" src="http://www.dragan-gaic.info/js/jquery-1.8.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
<script>
</script>
</head>
<body>
<div data-role="page" id="page-3">
<div data-theme="a" data-role="header">
<h3>
Second page
</h3>
</div>
<div data-role="content">
This is a second.html
</div>
</div>
</body>
</html>
Pagebeforeshow 错误
这在我的示例中也有效,但在您的情况下可能存在 2 个不同的问题:
页面事件从 HEAD 执行
如果此页面事件是从放置在 HEAD 内的脚本标记执行的(在第一个加载的 HTML 文件内 - 这将在第二种可能性中解释),那么您需要以不同的方式绑定它:
$(document).on('pagebeforeshow', '#page-3',function () {
alert("Second page");
});
如果您从放置在第二个文件 HTML 中的 HEAD 内容执行此代码
jQuery Mobile 使用 ajax 将页面加载到 DOM 中。因此,在第一个页面之后加载的所有页面都只会将 BODY 内容加载到 DOM 中。HEAD 将被丢弃。
如您所见,在我的示例中,pagebefpreshow 放置在第一个 index.html 页面中。如果您仍然想分离 javascript,请将其放在 BODY 内容中,如下所示:
<html>
<body>
<script>
// Your js code
</script>
// Rest of the page
</body>
</html>
如果您想了解更多信息,请阅读我的另一篇文章:为什么我必须将所有脚本放在 jquery mobile 中的 index.html 中