我正在使用jQuery Mobile和PhoneGap設置移動應用程序。我想要做的是,當我點擊帶有「news_link」標識的鏈接時,我希望jQuery從數據庫中提取數據並將其放到jQm的可摺疊設置中。在我的解決方案中,我希望在回調函數中使用$ .mobile.changePage,因爲我希望等到數據被提取並放入容器內部之後才能更改代碼頁。 下面的代碼:
$(function() {
$('#news_link').click(function(){
loadNewsFromDB(function(){
$.mobile.changePage($("#news"), { transition: "slideup"});
});
});
loadNewsFromDB是的PhoneGap的SQLite數據庫功能,這將與來自數據庫的多個回調函數獲取數據。內容將被放置到所需的容器以.html功能
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">
調試我知道這些代碼的工作,直到它工作得很好unti它到達$ .mobile.changePage-函數。不知何故,它不會改變頁面。我已經在其他場合檢查了它的功能,但不在回調函數中。
如果有人會幫我一個忙,我會很感激,我沒有看到明顯的錯誤或者是更具體的東西嗎?還有什麼其他解決方法可以從SQLite中獲取數據,等待數據被提取,將數據放入容器然後更改頁面?
感謝您的回答。我對jQuery非常陌生,所以我不知道回調函數的確切語法,但至少根據W3C學校和其他幾個來源,回調函數由'function(function(){});'So這是回調函數,而不是我理解的參數。而且我實際上已經嘗試將'$ .mobile.changePage'放在onLoadsSuccess裏面,最終在目標頁面中出現錯誤的html標記。不好的html標記的結果是我調查$ .mobile.changePage函數作爲回調函數的原因之一。 – BigGiantHead
@ Jugi84,你試過我寫的代碼嗎?我只是把你的'onLoadNewsSuccess'移到executeSql函數中......請試試看... – Izack
是的,我會試試。謝謝! – BigGiantHead