私は単一ページのJQueryMobileサイトで作業しています。JSONデータがロードされ、DOMがクライアント側で操作されている間、JQueryの初期化は最初はfalseに設定されます。コンテンツが読み込まれ、DOMが操作された後、JQueryMobileが初期化されます。
初期化したら、Ben AlmanのreplaceTextプラグインを使用して、出力されたHTML内のいくつかのプレースホルダーにJSONをドロップすることを計画しているため、「XXFIRST_NAMEXX」のようなプレースホルダーは「JohnSmith」になります。
ページを読み込んでいる一連のイベントで最後に発生したイベントにもかかわらず、JQuery Mobileのpageshow()イベント内からJSONデータにアクセスできません。
以下は私のコードの簡略化されたコメント付きバージョンです。JQuery1.7.1とJQueryMobile1.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
}
});