2013-03-27 65 views
1

嘿,夥計們,當堅持我在jQuery Mobile的導航到另一個頁面時(單頁模版多頁)jQuery Mobile的 - 的Javascript導航到另一個頁面

<script type="text/javascript"> 
     setInterval("window.location.reload();", 5000); 
    </script> 

如何確保不斷持續甚至javascript函數這隻發生在它被調用的頁面上,而不是在我通過基於Ajax的導航鏈接到的每一頁上調用它。

我使用jQuery Mobile的1.2

+0

在一個單獨的頁面模板中,你永遠不會離開,因此這是預期的行爲。 – 2013-03-27 16:50:15

+0

對不起,有不少錯別字。我的意思是jquery mobile – user2100493 2013-03-27 16:52:41

回答

3

將它綁定到您希望它發生的頁面。用頁面ID替換$('.selector')$('#home')。你也可以更具體的$('div[data-role="page"]#PageID')

// Trigger interval 
$('.selector').bind('pageinit', function() { 
setInterval("window.location.reload();", 5000); 
}); 

// Stop interval when navigating away 
$('.selector').bind('pagehide', function() { 
clearInterval(); 
}); 
+0

謝謝你很容易解決了這個問題。我只是在頁面上添加了一個頁面id,然後將頁面初始化設置爲初始化間隔。當離開頁面隱藏事件時,它會殺死間隔。 – user2100493 2013-03-27 17:10:05

+0

@ user2100493你可以爲'setInterval'指定一個ID,以防止有幾個ID爲了不通過'clearInterval'全部殺死它們。很高興我一直在幫助:) – Omar 2013-03-27 17:11:38

+0

是的我希望我可以誠實地檢查標記兩個答案,因爲下面的答案幫助我不殺死我的所有間隔以及。我將間隔分配給一個變量。你的答案雖然是最全面的,但我想這個答案會幫助大多數人搜索答案。 – user2100493 2013-03-27 17:22:11

2

如何確保這個定義只出現從中可以 叫,而不是在調用它的每一頁我鏈接到與阿賈克斯 基礎的導航頁面上?

不要叫它?目前您的代碼設置爲總是在頁面中包含時運行。要麼不包含它,要麼阻止它以某種其他方式運行(如if語句)。

2

您可以在導航前清除間隔。

首先,你需要在創建它去的區間參考:

var intervalRef = setInterval("window.location.reload();", 5000); 

然後你就可以清除它是這樣的:

clearInterval(intervalRef); 
// Navigate 
2

只是取消超時當其他頁面加載,或當前頁面退出時(另一頁面加載到ajax中,以便定時間隔保持不變)。

// trigger 
myInterval = setInterval("window.location.reload();", 5000); 

// stop 
clearInterval(myInterval); 
相關問題