2012-06-15 14 views
6

Sto utilizzando jQuery mobile in modello di pagina singola (Ogni pagina è un file html separato). Voglio precaricare una pagina che carica il contenuto tramite Ajax. Ho messo il codice prefetch nella funzione document.ready() nella prima paginajQuery mobile precaricamento di una pagina che carica contenuto tramite Ajax

$.mobile.loadPage("my-projects.html", { showLoadMsg: false }); 

chiamata AJAX all'interno della funzione document.ready() della seconda pagina, che voglio precaricare. Questa chiamata ajax non sta accadendo quando preimpegniamo quella pagina. C'è un modo per raggiungere questo obiettivo. Si prega di aiutare

+0

Penso che devi farlo utilizzando gli eventi di PhoneGap invece degli eventi di jQuery-mobile. http://docs.phonegap.com/en/1.0.0/phonegap_events_events.md.html – Th0rndike

risposta

1

jQuery Mobile ha prefetching integrato, tutto quello che dovete fare è aggiungere l'attributo data-prefetch ad un link che si collega a una pagina remota:

<a href="prefetchThisPage.html" data-prefetch> ... </a> 

Fonte: http://jquerymobile.com/demos/1.1.0/docs/pages/page-cache.html

In senso generale, quando si esegue il pull-in di una pagina tramite AJAX, la funzione document.readynon attiva. È tuttavia possibile utilizzare eventi della pagina mobile jQuery come pageinit. Ad esempio:

$(document).delegate('#my-page-id', 'pageinit', function() { 
    $.mobile.loadPage("my-projects.html", { showLoadMsg: false }); 
}); 
+0

Come sto usando ogni pagina è un file html separato # my-page-id non ha rilevanza qui.Inoltre non ci sono problemi con "$ .mobile.loadPage (" mio-project.html ", {showLoadMsg: false});" sta funzionando correttamente. Il problema è con la chiamata ajax che si trova nella pagina che voglio prefetch.that non si attiva quando il prefeching si avvicina –

+0

Dovresti leggere questo, notare la casella gialla: http://jquerymobile.com/demos/1.1.0/docs /api/events.html. Ora in jQuery Mobile poiché tutte le pagine di default sono inserite nel DOM tramite AJAX, l'uso di un ID per collegarsi a una pagina specifica ** ha sicuramente rilevanza **. L'uso del codice come mostrato nella mia risposta ci consente di eseguire codice specifico per pagine specifiche mantenendo al contempo una fonte per il nostro JS (puoi inserire il tuo JS in un file e includerlo all'inizio di ogni pagina in modo che sia pronto per ogni pagina). E il tuo problema è 'document.ready', non usarlo per i siti jQuery Mobile. Non funzionerà come ti aspetti. – Jasper

Problemi correlati