setinterval и load - PullRequest
       1

setinterval и load

1 голос
/ 25 июня 2011

Я думаю, что это основная проблема jquery, но она очень раздражает.Вот что я делаю:

  1. загрузка файла списков href class="tab" (внешний) из jquery
  2. нажмите на ссылку href и снова загрузите из внешнего файла
  3. setinterval 1000 обновляет результаты (2) с помощью метода load () AGAIN

Вопрос: во время обновления значение селектора имени меняется каждую 1 секунду (из-за обновления), когда я недавно щелкнулhrefs из # 1.

$('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 Ответ

1 голос
/ 25 июня 2011

Я думаю, что вы хотите отменить другие интервальные таймеры при запуске нового.

edit - Ой, подождите, я исправляю это ... хорошо, спасибо @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 (), вероятно, не выполняет то, что вы думаете / хотите.

отредактируйте снова - это можетбыть более разумным;конечно, на теле должен быть только один идентификатор таймера.Иногда я немного медленный.

...