setinterval和load

时间:2011-06-24 20:55:36

标签: javascript jquery setinterval

我认为这是一个基本的jquery问题,但它非常烦人。这就是我在做的事情:

  1. 从jquery
  2. 加载href class="tab"列表文件(外部)
  3. 点击href并再次从外部文件加载
  4. setinterval 1000使用load()方法AGAIN
  5. 刷新结果(2)

    问题是:在刷新期间,名称选择器的值每1秒更改一次(因为刷新),我最近点击了来自#1的hrefs。

    $('a.tab').live('click',function() {
        var value = $(this).attr('name');
        //....
        setInterval(function(){
            $("div#timed").load('retriever.php', {"update":value} );
        } ,1000);//set interval
        //....
        $(this).undelegate('click');
    });
    

1 个答案:

答案 0 :(得分:1)

我认为你想要在开始一个新的间隔定时器时取消它。

编辑 - 哎呀坚持我正在修理它......好的谢谢@kingjiv !!

$('a.tab').live('click',function() {
    var value = $(this).attr('name');
    var timers = $('body').data('timers') || {};
    //....
    for (var n in timers) clearInterval(timers[n]);

    timers[value] = setInterval(function(){
        $("div#timed").load('retriever.php', {"update":value} );
    } ,1000);//set interval
    //....
    $(this).undelegate('click');
    $('body').data('timers', timers);
});

正如其他人所说的那样,“undelegate()”调用可能没有按照你的想法做到。

再次编辑 - 这可以更智能地完成;当然,实际上只需要存储在身体上的一个计时器ID。我有时候很慢。