我目前正在使用JQuery mobile开发移动网站。我在foobar.html
使用多个页面进行导航,如下所示:
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="style/jquery.mobile-1.3.1.css" />
<script src="jquery-js/jquery-1.10.1.js"></script>
<script src="jquery-js/jquery.mobile-1.3.1.js"></script>
<title>Foobar</title>
</head>
<body>
<div data-role="page" id="foo">
<div data-role="content">
<a href="#bar" data-role="button">Go to Bar</a>
</div>
</div>
<div data-role="page" id="bar">
<div data-role="content">
<p>Bar</p>
</div>
</div>
</body>
我加载了foobar.html
文件,点击转到栏,它运行正常;但是,当我从index.hmtl
导航到foobar.html
并再次测试时,链接无法正常工作。刷新页面可以解决问题。
什么可以解释这种行为以及如何解决它?
答案 0 :(得分:2)
使用 jQuery Mobile
和多个HTML文件时,了解当您从 index.html
转到 {{ 1}} * 仅 *将加载第一页。基本上jQuery Mobile将删除页面的其余部分,包括 foobar.html
以及其他 HEAD
内容。
因此,在处理多个 BODY
页面时,只有第一页可以有多个内页,所有其他 HTML
页面都可以仅 1页。在您的情况下,只有 HTML
页面被加载到DOM中,页面 #foo
被丢弃。
另外,我还有另一个 ARTICLE ,其中描述了 #bar
如何处理多个HTML页面加载。
jQuery Mobile
<!DOCTYPE html>
<html lang="en">
<head>
<!-- META TAGS Declaration -->
<meta charset="UTF-8">
<title>TEst</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0;" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.css" />
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script>
<script>
$(document).on('pagebeforeshow', '#foo', function(){
alert($('#body-test').html());
});
</script>
</head>
<body id="body-test">
<div data-role="page" id="portfolio" data-add-back-btn="true">
<div data-role="content" data-theme='c' >
<a href="test.html" data-role="button">Go to Bar</a>
</div>
</div><!-- Page Project #1 -->
</body>
</html>
如果您运行此示例,它将告诉您(提醒您)仅加载页面#foo。