我想要做的是通过AJAX加载一些HTML内容,根据location.hash,将其放入新页面并加载此页面。
但是如果我使用pagebeforechange
事件自己创建一个页面,jquerymobile就会忽略它,创建自己的div并且不会显示我的内容。
编辑: 这就是我目前正在做的事情,但它不起作用。
$(function() {
getPageContent(top.location.href, false);
$(document).bind( "pagebeforechange", function( e, data ) {
getPageContent(data.toPage, true);
});
});
function getPageContent(pageUrl, changedPage) {
var re = /.*\/#(.*)/;
var result;
result = re.exec(pageUrl);
window.page = result[1].substr(0,3);
window.id = result[1].substr(3);
window.ajaxUrl = "request.php?page="+window.page+"&id="+window.id;
$.ajax({
url: window.ajaxUrl,
success: function(data) {
if(data.error) {
alert(data.error);
}
else if(data.data) {
if(changedPage) {
changePage(data.data));
}
else {
$('#content[role="main"]').html(atob(data.data));
setupPage();
}
}
else {
alert("UNKNOWN ERROR: "+data);
}
}
});
}
function changePage(html) {
var div = "<div></div>";
var newPage = $(div).attr("data-role", "page").attr("data-url", window.page+window.id);
var header = $(div).attr("data-role", "header");
var content = $(div).attr("data-role", "content");
var footer = $(div).attr("data-role", "footer");
$("body").append(newPage);
newPage.append(header, content, footer);
content.html(html);
newPage.page();
}
答案 0 :(得分:1)
完整编辑整个答案:
首先。将您的正文ID设为id=body
。然后,当您想要加载新页面并更改为它时,请使用如下的ajax调用:
$.get(window.ajaxUrl, function(data){
$('#body').append("<div id='newPage' data-role='page'></div>"); //Creates a new page.
$('#newPage').html(data); //Loads the html content into the new page.
$.mobile.changePage('#newPage'); //Navigates to the new page.
}
这会将方法GET的ajax调用发送到window.ajaxUrl
中找到的网址。如果调用成功,它将创建一个名为“newPage”的新页面,并使用从ajax调用接收的数据填充它。然后重定向到新创建的页面。
此jsFiddle显示了其工作原理。但是,它不使用任何ajax调用。
答案 1 :(得分:0)
您必须使用jQueryMobile刷新页面:
$("#your-page").trigger("create");
- 编辑
<script>
$("#thepage").live("pageshow", function(){
$("#thepage).trigger("create");
});
</script>
在'pageshow'事件
之前更改#thepage的内容答案 2 :(得分:0)
它会自动为您执行此操作 - 只需定期链接到页面,jquery mobile将关闭加载微调器,通过ajax将其加载到后台,然后转换到新页面。
确保所有网页都使用唯一ID和data-role ='page'来决定。查看此处的入门指南: http://jquerymobile.com/demos/1.1.0/docs/about/getting-started.html