如果我正确阅读了http://jquerymobile.com/demos/1.1.0/docs/api/methods.html
上的文档使用pageContainer和role应该将一个页面的内容替换为我当前页面,例如,好像它是一个保留页眉和页脚但只更改内容的模板。
我正在尝试做一个简单的例子,以了解它是如何工作的,但我有一段时间。
这是我的超级简单示例。
<!DOCTYPE html>
<html>
<head>
<title></title>
<link rel="stylesheet" href="static/css/jquery.mobile-1.1.0.min.css" type="text/css" />
<script type="text/javascript" charset="utf-8" src="static/js/jquery-1.7.1.min.js"></script>
<script type="text/javascript" charset="utf-8" src="static/js/jquery.mobile-1.1.0.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$.mobile.changePage('page2.html',{
'pageContainer': $('#content_container'),
'role':'content'
});
});
</script>
</head>
<body >
<div data-role="page">
<div data-theme="a" data-role="header">
<div data-role="navbar" data-iconpos="top">
My Header
</div>
</div>
<div id='content_container' data-role="content">
<p>Page 1 </p>
</div>
<div data-theme="a" data-role="footer">
My Footer
</div>
</div>
</body>
</html>
这是第2页
<html>
<body>
<div data-role="page">
<p>Page 2</p>
</div>
</body>
</html>
当这个加载时,我没有将“Page 1”替换为“Page 2”,而是被重定向到一个新的空白页面。任何指向我做错的指示都将不胜感激。
答案 0 :(得分:3)
您的ID中存在语法错误:
<div id='#content_container' data-role="content">
将其更改为(删除哈希):
<div id='content_container' data-role="content">
根据相关问题Open links in div container in JQuery Mobile,changePage()似乎不适用于将服务器内容加载到页面内的特定容器中。它想要改变整个页面。
这有效:
$(document).ready(function(){
$("#content_container").load("page2.html");
});
答案 1 :(得分:3)
这是通过API实现此目的的一种方法,遗憾的是直接利用jquery的加载并不保留格式化这种方法的元素。
$(document).bind('pageload',function(evt,data){
$(document).unbind('pageload');
$(data.page).fadeIn();
});
$.mobile.loadPage('page2.html',{'pageContainer':$('#content_container')});
答案 2 :(得分:1)
您需要在第二页添加data-role="content"
元素。 pageContainer
方法的changePage()
选项意味着更改所有页面的容器,而不是特定页面的容器(我从未使用过此选项,但我相信这是个主意)
如果您执行console.log($.mobile.pageContainer)
,则会看到它是body
元素:http://jsfiddle.net/8T35d/。
此选项的目的是允许您创建一个在调用changePage()
方法时不会更改的持久性UI。
如果您正在寻找持久性页眉/页脚,请查看文档中的此页面:http://jquerymobile.com/demos/1.1.0/docs/toolbars/footer-persist-d.html