【发布时间】:2011-11-10 10:18:55
【问题描述】:
在我看来,我并没有完全理解 jquerymobile 背后的概念,因为我不知道如何解决这个问题。
我要做的是通过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();
}
【问题讨论】:
标签: jquery-mobile