我正在使用 jQuery Mobile 和 PhoneGap 建立一个移动应用程序。我想要做的是,当我单击 ID 为“news_link”的链接时,我希望 jQuery 从数据库中获取数据并将其放入 jQm 的可折叠集。在我的解决方案中,我想在回调函数中使用 $.mobile.changePage,因为我想等到数据被提取并放入容器中,然后代码更改页面。这是代码:
$(function() {
$('#news_link').click(function(){
loadNewsFromDB(function(){
$.mobile.changePage( $("#news"), { transition: "slideup"} );
});
});
loadNewsFromDB 是 PhoneGap 的 SQLite 数据库函数,它可以从数据库中获取具有更多回调函数的数据。内容将使用 .html-function 放入所需的容器中
function loadNewsFromDB(){
//some code here
theDB.transaction(function(tx) {
tx.executeSql(sqlStr, [], onLoadNewsSuccess, onLoadNewsError);
},onTxError, onTxSuccess);
function onLoadNewsSuccess(tx, results){
//some code here
$("#newsSet").html(htmlCodeAndContentToPut);
Html 是 jQm 的基本 ui 模块:
<!-- some html code here --!>
<div data-role="page" id="news">
<div data-role="content">
<div id="newsSet" data-role="collapsible-set" data-mini="true">
通过调试,我知道代码可以正常运行,直到它到达 $.mobile.changePage-function 为止。不知何故,它不会改变页面。我已经检查过它在其他情况下运行良好的函数,但在回调函数中却没有。
如果有人帮助我,我将非常感激我是否没有看到明显错误的东西或更具体的东西?从 SQLite 获取数据、等待获取数据、将数据放入容器然后更改页面还有哪些其他解决方法?