2 votes

jQuery comment réinitialiser une fonction de retardement

J'utilise un fader Jquery à retardement comme ci-dessous, mais je dois le réinitialiser en fonction d'événements dans le code, c'est-à-dire remettre le minuteur à zéro. Comment dois-je m'y prendre ? J'ai essayé d'appeler fader() à nouveau.

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

});

};

1voto

Robert Massa Points 1349

Vous devez enregistrer le timeoutID renvoyé par setTimeout. Vous pouvez appeler window.clearTimeout(timeoutID) pour supprimer le timer et empêcher l'événement de se produire. Vous devrez en créer un nouveau par la suite en cas de "réinitialisation".

Le mozilla documentation pour setTimeout .

Vérifiez cette question Il offre également une solution (à mon avis) plus élégante au même problème que celui que vous rencontrez.

1voto

kosta Points 13

Voici le code que j'ai utilisé (il fait glisser un nouvel élément à partir de la gauche, le maintient pendant le temps donné par ma fonction de délai personnalisée, puis le fait disparaître à nouveau) :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X