2012-01-09 49 views
14

我只能將pagebeforechange綁定到整個jquery移動文檔,而不是單個頁面。任何人都可以解釋爲什麼this不起作用?jQuery Mobile - 無法將pagebeforechange綁定到頁面ID?

+0

它不會觸發,因爲頁面不會重新加載或更改。看看[文檔](http://jquerymobile.com/test/docs/pages/page-dynamic.html)。 – Blender 2012-01-09 18:41:07

+0

+1使用jsfiddle! – Rebecca 2012-01-09 19:12:38

+0

我有同樣的問題 - 「pagebeforechange」直接綁定頁面時不起作用,而「pagebeforeshow」和「pagebeforecreate」正常工作。 – 2012-08-16 20:57:54

回答

-1

我有完全相同的問題,但我至少有一個爲你解決。警告:這是愚蠢的,可怕的代碼。 但它做的工作。

window.doubleLoadPreventer = 0; 

$(document).bind('pagebeforechange', function(e, data){ 

    if (window.doubleLoadPreventer === 1) { 
     window.doubleLoadPreventer = 0; 
     return; 
    } else { 
     window.doubleLoadPreventer = 1; 
    } 

    //your normal event handler code here 
} 
+1

它根本不開火,但不是兩次。 – 2012-08-16 21:06:15

1

隨着jQuery Mobile的 - 我敢肯定你不綁定到該文件,但對pageinit財產。

綁定到文檔會產生問題...請記住此鏈接在#home上工作,您需要另一個事件監聽器beforepageshow或您再次顯示頁面之前的內容。

This文檔是非常有幫助...

1

選擇了JQM頁面:

$('.ui-page') 

添加事件偵聽到文檔中的所有頁面是可以做到:

$(document).delegate(".ui-page","pagebeforehide", function(evt, ui){ 
    alert('pagebeforehide fired'); 
} 

小提琴使用delegate

注意使用綁定而不是代理將不適用於上述選擇器,因爲ui-page類僅在頁面創建時添加。

在-爲了使用綁定,使用下面的選擇:

$("div[data-role='page']") 

並使用(僅後文檔準備就緒或體已加載)添加事件偵聽器:

$("div[data-role='page']").bind("pagebeforehide", function(evt, ui{ 
alert('pagebeforehide fired'); 
} 

小提琴使用bind

我也推薦使用mo bileinit事件相當文件準備!

+0

從jQuery Mobile 1.1.0開始,綁定解決方案與'pagebeforeshow'一起使用,但不與'pagebeforechange'一起使用。我沒有明白。 – 2012-08-09 10:40:17

+0

請把你正在嘗試做的代碼 – 2012-08-15 08:11:47

+0

-1。仔細閱讀問題 - 有人問到「pagebeforechange」,而不是「pagebeforehide」事件。沒有任何例子與「pagebeforechange」一起工作。 – 2012-08-16 20:46:45

2
$("div[data-role='page']").live("pagebeforehide", function(event) { 
alert('This alert should trigger before Next Page Here is shown?'); 
}); 

(檢查link瞭解詳細信息) 你也可以使用綁定的,而不是活的,希望它幫助。

相關問題