2012-04-20 32 views
1

我有一個jQuery的移動應用程序,有一個頁面。這個頁面有三個DIV,我以編程方式根據各種變量選擇這些DIV中的一個。無論如何,一個DIV包含一個select元素。這個元素有20個項目。由於剪切量,選擇框在其自己的對話框中打開。我很好,但是,在用戶做出選擇後,我的託管頁面的pagebeforeshow事件再次被激發。我的問題是,我似乎無法弄清楚如何檢測這個事件是由於用戶選擇一個選項或關閉選擇對話框而引發的。檢測如果JQuery Mobile來自選擇對話框

有沒有辦法在pagebeforeshow事件中檢測我們是如何到達這裏的?

回答

1

jQuery mobile將元數據傳遞給大多數事件的回調函數。從docspagebeforehow

引發了「toPage」我們正轉換到,實際過渡動畫開工前。這個事件的回調將接收一個數據對象作爲他們的第二個參數。此數據對象具有以下屬性:

  • prevPage(object) - 包含我們正在轉換的頁面DOM元素的jQuery集合對象。請注意,當在應用程序啓動過程中轉換第一頁時,此集合爲空。

您應該能夠使用在回調函數跳轉到你的優勢,即檢測是否prevPage是當前頁面。這可能是這樣的:

$('#yourPage').live('pagebeforeshow', function(event, data) { 
    var from = data.prevPage; 
    // do some inspection of `from` and branch accordingly 
    // might require some experimental console.logging first 
}); 
+0

如果我錯了,請糾正我,但看起來在「select」元素的情況下,prevPage對象是空的。 – user70192 2012-04-20 19:58:33

+0

@ user70192我還沒有驗證過,但它仍然足以提供分支信息,對不對?只是測試空虛,你知道你來自一個選擇覆蓋.. – paislee 2012-04-20 20:03:03

0

我還沒有核實上述意見提出的問題,但data.prevPage有整個前一頁面的HTML,通過data.prevPage[0].innerHTML訪問的副本。我相信你可以做一些事情,如綁定到選擇對話框上的點擊事件,並告訴它添加一個類或其他任何東西到用戶選擇任何條目的DOM,並將其從HTML中刪除?只是在那裏拋出一個想法。

相關問題