Показать сообщение отдельно
  #7 (permalink)  
Старый 25.01.2011, 22:42
Профессор
Отправить личное сообщение для qwermjk Посмотреть профиль Найти все сообщения от qwermjk
 
Регистрация: 31.01.2010
Сообщений: 229

Через пару часов мозговой атаки я решил эту проблему =)
Как было:
var intervalID = setInterval(nextNewsAuto, time);
$(this).click(function() {
   clearInterval(ttt);
   $(this).each(nextNews);
});
Недостатки: Нужно было чтобы после клика заново, через некоторое время, запускалась функция nextNewsAuto и чтобы прошлый сетинтервал удалялся, чтоб не было накладок.
Как стало:
function ffff() {
   var intervalID = setInterval(nextNewsAuto, time);
   return intervalID;
}

var ttt = ffff(), ddd = 0, rrr = 0;
$(this).click(function() {
   if(ddd == 0) {
      ddd = 1;
      clearInterval(ttt);
      rrr = setTimeout(function() { ttt = ffff(); ddd = 0; }, 10000);
   } else {
      clearInterval(rrr);
      rrr = setTimeout(function() { ttt = ffff(); ddd = 0; }, 10000);
   }
   $(this).each(nextNews);
});
Достоинства: Теперь всё нормально, функция nextNewsAuto нормально вызывается, без накладок, если идёт повторный клик то прошлый сеттаймаут удаляется ...

Последний раз редактировалось qwermjk, 25.01.2011 в 22:46.
Ответить с цитированием