我正在开发一个单页 JQuery Mobile 网站。在加载 JSON 数据并在客户端操作 DOM 时,JQuery 初始化最初设置为 false。加载内容并操作 DOM 后,初始化 JQuery Mobile。
初始化后,我计划使用 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
}
});