Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Прерывание delay() (https://javascript.ru/forum/jquery/23196-preryvanie-delay.html)

Nightmare 15.11.2011 18:35

Прерывание delay()
 
$('#div').fadeIn('fast').delay(5000).fadeOut('fast')


Этот код показывает какой-то див, и через 5 сек скрывает его.

как остановить delay() ?

Делаю примерно так:
$('#div').stop(true, true).fadeOut('fast').fadeIn('fast')


Но всt все равно считает, и исчезает

DjDiablo 15.11.2011 21:58

1) вместо delay можно использовать setTimeout для задержки
и clearTimeout для прерывания ожидания


что то вроде
var waiter;

// fadeIn отработает и вызовет безымянную функцию
$('#div').fadeIn('fast', function(){

   // создаём таймер и запоминаем ссылку на него
   waiter=setTimeout(function(){

          // когда таймер отработает будут запущен fadeOut
          $('#div').fadeOut('fast');
   },5000);
})

// пример остановки таймера
// щелчок по killer унечтожит таймер и обьект не исчезнет
$('#killer').click(function(){
     clearTimeout(waiter);
});


2) для delay попробуй ещё связку из двух методов.
$("#div").clearQueue(); // унечтожаем очередь
$("#div").stop();       // останавливаем текущую анимацию


Часовой пояс GMT +3, время: 03:36.