2013-03-27 67 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); 
相关问题