2012-07-08 82 views
0

在我的jQuery Mobile中,我有2頁,index.html和test.html。在索引頁中有一個<p>標記,它有一個類,所以當我的javascript上點擊<p>標記時,它想要加載test.html。Jquery Mobile預緩存頁面

但是在jQuery Mobile的索引頁面加載測試頁面時,它不在DOM中。因此,爲了進入測試頁面並替換test.html中的div的內容,它必須首先加載到DOM中。所以這裏是我在做什麼:

當try2被點擊時,我做一個加載頁面進入DOM,然後我用新的html替換div,然後我切換到頁面。 div的html永遠不會改變。

$('.try2') 
    .click(function(){ 
    $.mobile.loadPage('test.html', { showLoadMsg: false }); 
    $('#mytest').html('i am here now').fadeIn('slow'); 
    $.mobile.changePage("test.html", { transition: "slideup"}); 
    }); 

回答

0

通過在指向第二頁的鏈接上使用data-prefetch屬性來預取頁面。 Docs:http://jquerymobile.com/demos/1.1.0/docs/pages/page-cache.html

然後綁定到pageinit或pageshow事件,以在第二個頁面轉換到視圖之前更新div。

您的當前代碼將不起作用,因爲事件處理程序中的前兩行是異步的,所以要使用它們,您必須使用異步函數的回調函數。

更新

如果你想預緩存頁面,但沒有直接鏈接到頁面,你總是可以創建一個虛擬鏈接,並從視圖中隱藏:

<a data-precache href="page2.html" style="display:none;"></a> 
+0

如果我使用href,我已經使用了數據預取。哪些工作沒有綁定到pageinit。但在同一頁面上說,或者我可以使用pageLoad而不是數據預緩存。我不得不看父親進入pageinit – SeeleyBoothe 2012-07-08 20:28:57

+0

好吧看看這樣。索引頁面是一個登錄頁面。所以當我點擊登錄按鈕時,它必須將實際頁面更改爲Page1.html。現在在登錄中沒有將數據預取添加到的href。所以我只是不明白如何從頁面更改爲另一個,但它仍然能夠訪問所有的js功能 – SeeleyBoothe 2012-07-08 21:42:45

+0

這就是'pageinit'事件處理程序的用途。無論頁面如何進入DOM,一旦jQuery Mobile初始化頁面,您就可以運行代碼。 – Jasper 2012-07-09 16:44:59