2012-06-15 214 views
6

我在單個頁面模板中使用jQuery mobile(每個頁面都是一個單獨的html文件)。我想預取一個通過Ajax加載內容的頁面。我把預取代碼的document.ready()函數中的第一頁jQuery Mobile預取通過Ajax加載內容的頁面

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

Ajax調用,我想預取第二頁的document.ready()函數中。當我們preftech那個頁面時,這個ajax調用不會發生。有沒有辦法做到這一點。請幫助

+0

我認爲你必須使用phonegap事件來代替jQuery移動事件。 http://docs.phonegap.com/en/1.0.0/phonegap_events_events.md.html – Th0rndike

回答

1

jQuery Mobile的已預取建權,所有你需要做的就是在data-prefetch屬性添加到鏈接到一個遠程頁面的鏈接:

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

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

從一般意義上說,當你通過AJAX引入一個頁面時,document.ready函數將不會啓動。但是,您可以使用jQuery Mobile Page事件,例如pageinit。例如:

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

正如我使用的每一頁是一個單獨的HTML文件#我的網頁ID沒有相關here.Also沒有問題「$ .mobile.loadPage(」my-projects.html「,{showLoadMsg:false});」它正在正確觸發。問題是在我想要預取的頁面中的ajax調用。當你在發生事件時不會觸發 –

+0

您應該閱讀本文,注意黃色框:http://jquerymobile.com/demos/1.1.0/docs /api/events.html。現在在jQuery Mobile中,默認情況下,所有頁面都通過AJAX帶入DOM,使用ID綁定到特定頁面**當然具有相關性**。使用我在答案中顯示的代碼,可以讓我們爲特定頁面運行特定的代碼,同時爲JS保留一個源代碼(您可以將JS放在一個文件中並將其包含在每個頁面的頭部,以便爲每個頁面準備好)。而你的問題是'document.ready',不要用於jQuery Mobile站點。它不會像你期望的那樣工作。 – Jasper