0

我有 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);
});
4

2 回答 2

0

你的意思是刷新浏览器页面的时候?然后你可以通过监听来停止它unload

var runMyFunction = function() {
  // clear interval
};

window.onunload = runMyFunction();

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

于 2012-12-14T16:34:29.163 回答
0

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

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

  1. 而不是实时使用绑定/取消绑定和开/关来取消绑定事件,然后在每个 pagebeforeshow/pageshow 之后再次将其绑定到同一元素。这不是什么好方法。

点击事件示例:

$('#elementID').unbind();
$('#elementID').bind('click', function(e) {

});
  1. 正确的一种方法是使用事件过滤器来检查事件是否已经绑定。可以在这里找到:http: //www.codenothing.com/archives/2009/event-filter/

点击事件示例:

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

}); 
于 2012-12-14T17:23:18.720 回答