2009-07-02 3 views
2

Я использую фейдер с задержкой по времени Jquery, как показано ниже, но вам нужно повторно инициализировать его на основе событий в коде, то есть сбить таймер обратно до нуля. Как мне это сделать? Я попробовал снова вызвать фейдер().jQuery Как повторно инициализировать функцию задержки

function fader(){ 

$(ajdiv).delay(10000, function(){$(ajdiv).fadeOut()}); 

} 
jQuery.fn.delay = function(time,func){ //run a delayed function 

return this.each(function(){ 

    setTimeout(func,time); 

}); 

}; 

ответ

1

Необходимо сохранить идентификатор timeoutID, возвращенный из setTimeout. Вы можете вызвать window.clearTimeout (timeoutID), чтобы удалить таймер и остановить событие. В случае «перезагрузки» вам придется создать новый.

Mozilla documentation for setTimeout.

Отъезд this question тоже, у него есть (на мой взгляд) более элегантное решение, я думаю, что у вас такая же проблема.

+0

Спасибо! : D Знаете ли вы, что это работает и для других браузеров? – user132192

+0

Да, это поддерживается всеми браузерами-мэрами. –

1

Это мой фактический код, который я использовал (это новый элемент слайд из левого пребывания на время, указанное в моей пользовательской функции задержки, а затем снова исчезают):

$element.next().next().hide().show('slide', {direction : 'left'}, 700, function() {$(this).delay(10000, function() {$element.next().next().hide('slide', {direction: 'left'}, 700)})}); 
Смежные вопросы