2012-07-28 88 views
2

有沒有辦法改變jQuery Mobile中的頁面,但仍然有$(document).ready函數啓動?我調用$ .mobile.changePage時似乎遇到一些問題,因爲我的頁面並不總是完全加載....jQuery Mobile ChangePage替代方案

或者找不到changePage的替代方法,是否有刷新頁面的方法通過changePage加載到DOM?

+0

可能重複[Jquery Mobile - $ .mobile.changepage不加載外部.JS文件](http://stackoverflow.com/questions/7449402/jquery-mobile-mobile-changepage-not-loading-external-js文件) – Jasper 2012-08-02 20:10:21

+0

這是一個很常見的問題/問題。當您轉移到AJAX導航模型時,您必須重新考慮您的事件綁定,因爲您在整個用戶體驗中使用相同的DOM。我已經回答了類似的問題,我認爲這個答案可以幫助你:http://stackoverflow.com/questions/7449402/jquery-mobile-mobile-changepage-not-loading-external-js-files/7449731#7449731 – Jasper 2012-08-02 20:10:28

回答

2

這個答案是錯的,無用的,所以這裏的一個實際上將幫助人們... - 碧玉

文檔:http://jquerymobile.com/demos/1.1.1/docs/api/methods.html

具體來說,你正在尋找reloadPage選項:

reloadPage布爾型,默認值:false)強制重新加載頁面,即使它已經在頁面容器的DOM中。僅當 changePage()的'to'參數是一個URL時才使用。

所以,像這樣將工作:

$.mobile.changePage('/some/url.html', { 
    reloadPage : true 
}); 

您也可以綁定到特定的僞頁面pageinit事件,以專門爲那些僞網頁運行代碼:

$(document).delegate('#page-1', 'pageinit', function() { 
    //run code for #page-1 pseudo-page 
}).delegate('#page-2', 'pageinit', function() { 
    //run code for #page-2 pseudo-page 
}).delegate('#page-3', 'pageinit', function() { 
    //run code for #page-3 pseudo-page 
}); 

然後,我建議將整個站點的所有代碼放在一個.js文件中,並將其包含在每個文檔的任何data-role =「page」或data-role =「dialog」元素的外部或外部。這樣,無論用戶登陸網站或瀏覽網站的方式,您網站的代碼都將始終存在。

+0

@ Jaspar我可以創建一個JSFiddel的效果,但我從個人經驗知道document.ready在$ .mobile.changePage()之後被激發。 – Apollo 2012-08-02 19:48:31

+0

我設置了一個快速示例,顯示在jQuery Mobile網站(版本1.1.1)中從一個頁面到另一個頁面進行導航時引發的事件:http://apexeleven.com/stackoverflow/document-ready/。您會注意到'ready'事件在初始頁面加載後未被觸發。 – Jasper 2012-08-02 19:57:37

1

在jQuery Mobile中,ajax用於在瀏覽時將每個頁面的內容加載到DOM中,並且DOM就緒處理程序(即,使用$(document).ready()限制的所有事件)僅對第一頁執行。要在頁面上執行特定事件時,將顯示它您可以嘗試把這個特定的頁面上,

$(document) 
    .unbind("pageshow.somenamespace") 
    .bind("pageshow.somenamespace", 
    function() { 
     // code here 
    } 
);