1

嘿伙计们,我有一个 javascript 函数,即使在 Jquery Mobile 中导航到另一个页面(单页模板而不是多页)时也会持续存在

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

如何确保这只发生在调用它的页面上,而不是在我使用基于 ajax 的导航链接到的每个页面上调用它?

我正在使用 Jquery Mobile 1.2

4

4 回答 4

3

将其绑定到您希望它发生的页面。替换$('.selector')为 pageID,例如$('#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();
});
于 2013-03-27T16:51:06.093 回答
2

如何确保这只发生在调用它的页面上,而不是在我使用基于 ajax 的导航链接到的每个页面上调用它?

不叫吗?目前,您的代码设置为在页面包含时始终运行。要么不包含它,要么阻止它以其他方式运行(例如 if 语句)。

于 2013-03-27T16:49:53.183 回答
2

您可以在导航之前清除间隔。

首先,您需要在创建间隔时获得对间隔的引用:

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

然后你可以像这样清除它:

clearInterval(intervalRef);
// Navigate
于 2013-03-27T16:54:15.510 回答
2

只需在其他页面加载或当前页面退出时取消超时(其他页面以 ajax 加载,因此定时间隔保持不变)。

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

// stop
clearInterval(myInterval);
于 2013-03-27T16:55:11.173 回答