我正在使用單個頁面JQuery Mobile站點。當JSON數據被加載並且DOM被操縱客戶端時,JQuery初始化最初被設置爲false。內容加載和DOM操作後,JQuery Mobile被初始化。在JQuery Mobile pageshow()事件上訪問JSON數據
初始化完成後,我打算使用Ben Alman的replaceText插件將JSON放入輸出HTML中的某些佔位符,因此「XXFIRST_NAMEXX」等佔位符變爲「John Smith」。
我還沒有進入更換部件b/c我無法從JQuery Mobile的pageshow()事件中訪問JSON數據,即使在加載頁面的事件序列中觸發了最後一個事件。
下面是我的代碼的簡化和註釋版本。 我正在使用JQuery 1.7.1和JQuery Mobile 1.1.0 我在這裏錯過了什麼? 謝謝!
// jQuery Mobile initialization
$(document).bind("mobileinit", function() {
//prevent JQM from initializing until after content has been loaded in .getJSON callback;
$.mobile.autoInitializePage = false;
});
$(document).bind("pageshow", function(event, data){
console.log('pageshow fires'); //fires 4th
//DROP-INS
//need to replace text within manipulated and initialized html
var resplaceScope, strDisplayName, strSchoolName, strOfferTitle;
replaceScope = $('body *');
//collect variables from json data
strOfferTitle = data.content.offer_vars.offer_title; //ERROR Uncaught TypeError: Cannot read property 'offer_vars' of undefined
replaceScope.replaceText(/XXOFFER_TITLEXX/gi, strOfferTitle);
});
$(document).ready(function(){
console.log('document.ready fires'); //fires 1st
$.getJSON('io_content.json', function(data) {
console.log('getJSON fires'); //fires 2st
getContent(data);
// ... once code is manipulated by getContent, Jquery is ready to initialize
$.mobile.initializePage();
});
function getContent(data){
console.log('getContent fires'); //fires 3rd
// ... code to manipulate content client side before jquery mobile initializes
}
});
訪問是的,這確實有助於!我沒有想到數據是兩個不同的東西 - 一個是獲得JSON,另一個是pageShow。一旦我全局聲明瞭我的dropin變量,並在getContent()中定義它們,pageShow就擁有了它需要執行的操作。非常感謝! – emkmail2 2012-07-20 16:41:26