2012-08-09 75 views
1

我有一個很大的HTML頁面,其中「divs」被認爲是「頁面」,我正在交換這些「divs」。jQuery mobile 1.1.0:奇怪的'pagebeforechange'行爲

我已經添加以下代碼:

$(document).bind('pagebeforechange', function(e, data) { 
    if (typeof data.toPage === "string") { 
     console.log(data.toPage); 
    } 
} 

而這裏的控制檯日誌:

#page-main 
http://ba.m.p.fr/#page-panier 
http://ba.m.p.fr/#page-horaires 
http://ba.m.p.fr/#page-horaires&ui-page=1-5 
http://ba.m.p.fr/#page-horaire-valider 

所以,有時候這僅僅是id有時是整個URL。怎麼會?

+1

你怎麼做這些頁面之間進行切換?你使用changePage方法,鏈接或兩者? – davids 2012-08-09 12:09:05

+0

我只使用'changePage'方法 – 2012-08-10 08:03:19

+0

那麼你什麼時候獲得第一個值,只需使用id?根據jQuery Mobile docs「值(toPage)完全匹配第一個參數到觸發事件的changePage()調用」 – davids 2012-08-10 08:05:40

回答

0

我做了一個解決方法,這不是一個解釋。我的舊代碼是這樣的:

$(document).bind('pagebeforechange', function(e, data) { 
    if (typeof data.toPage === "string") { 
     if (data.toPage == "page-aa") { 
      /* code for page-aa */ 
     } else if (data.toPage === "page-bb") { 
      /* code for page-bb */ 
     } else if (data.toPage === "page-cc") { 
      /* code for page-cc */ 
     } 
    } 
} 

而現在我的新代碼是這樣的:我靠「pagebeforeshow」:

$("div#page-aa").on('pagebeforeshow', function(e, data) { 
    /* code for page-aa */ 
}); 
$("div#page-bb").on('pagebeforeshow', function(e, data) { 
    /* code for page-bb */ 
}); 
$("div#page-cc").on('pagebeforeshow', function(e, data) { 
    /* code for page-cc */ 
}); 

它完美的作品。但這是一個解決方法,而不是我的問題的解釋。無論如何,如果有人爲這個問題googles,並閱讀我的問題,也許這種解決方法將有所幫助!

0

toPage可以是包含要轉換到的頁面的jQuery集合對象,也可以是要加載/轉換到的頁面的URL引用。

// We only want to handle changePage() calls where the caller is 
// asking us to load a page by URL. 
if (typeof data.toPage === "string") ... 

http://jquerymobile.com/demos/1.1.1/docs/pages/page-dynamic.html