在pageChange上取消1个间隔

时间:2012-12-14 16:30:15

标签: jquery-mobile

我有2页需要每分钟调用一次函数,所以我使用setInterval()执行此操作。但是,每当我导航到页面时,都会创建一个新的间隔,最终会使网站陷入困境。每当我离开页面时,有没有办法取消间隔?

var pollinginterval = 60000;

$('#HomeViewPage_MyLocation').live('pagebeforeshow', function(toPage, fromPage){
    GetUsersByLocation();

    setInterval(function() {
        GetUsersByLocation();
    }, pollinginterval);
});     


$('#HomeViewPage_ColleagueLocation').live('pageshow', function(toPage, fromPage){
    GetAllUsersByTeam();
    GetAvailableTeams();

    setInterval(function() {
        GetAllUsersByTeam();
        GetAvailableTeams();
    }, pollinginterval);
});

2 个答案:

答案 0 :(得分:0)

你的意思是刷新浏览器页面吗?然后你可以通过持续unload

来阻止它
var runMyFunction = function() {
  // clear interval
};

window.onunload = runMyFunction();

如果没有,您仍然可以清除内部页面更改的间隔。

答案 1 :(得分:0)

这是因为jQM存在多个事件的问题。好的,这不是问题,您必须了解,在您的情况下,每次访问您的页面时,都会再次应用相同的事件。

你可以做两件事来解决这个问题:

  1. 在每次pagebeforeshow / pageshow之后,再次将其绑定到同一元素之前,不使用bind / unbind和on / off取消绑定事件。这不是一个好方法。
  2. 点击事件的示例:

    $('#elementID').unbind();
    $('#elementID').bind('click', function(e) {
    
    });
    
    1. 正确的做法是使用事件过滤器来检查事件是否已绑定。可在此处找到:http://www.codenothing.com/archives/2009/event-filter/
    2. 点击事件的示例:

      $('#elementID:Event(click)').each(function(){
      
      });