2009-07-02 6 views
2

J'utilise un fader à retard temporel Jquery comme ci-dessous, mais j'ai besoin de le réinitialiser en fonction des événements dans le code, c.-à-d. Remettre le temporisateur à zéro. Comment puis-je faire cela? J'ai essayé d'appeler à nouveau fader().jQuery comment réinitialiser une fonction de retard

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); 

}); 

}; 

Répondre

1

Vous devez enregistrer le délai retourné par setTimeout. Vous pouvez appeler window.clearTimeout (timeoutID) pour supprimer le temporisateur et arrêter l'événement. Vous devrez en créer un nouveau en cas de "réinitialisation".

Le mozilla documentation for setTimeout.

Jetez un coup d'œil à this question aussi, il y a une solution (à mon avis) plus élégante au problème que vous rencontrez.

+0

Merci! : D Savez-vous si cela fonctionne aussi pour d'autres navigateurs? – user132192

+0

Oui, il est pris en charge par tous les navigateurs du maire. –

1

Ceci est mon code réel que je (il fait une nouvelle diapositive d'élément de séjour pour le temps laissé donné à ma fonction de retard sur mesure, puis de nouveau disparaître):

$element.next().next().hide().show('slide', {direction : 'left'}, 700, function() {$(this).delay(10000, function() {$element.next().next().hide('slide', {direction: 'left'}, 700)})});