49 votes

Comment annuler un jQuery fadeOut () une fois qu'il a commencé?

J'ai une base div élément à représenter un message que je montre pendant quelques secondes, puis fondu à l'aide d'

$('#message').fadeOut(5000);

Je veux être en mesure d'annuler le fondu de sortie si l'utilisateur place le pointeur de la souris sur la div.

Comment puis-je annuler le fondu de sortie une fois que le fadeOut méthode a commencé à s'estomper de la div?

Mon code existant, ci-dessous, si la souris entre dans la div, alors qu'il est montré, mais j'ai besoin de permettre pour si l'utilisateur passe au-dessus de la div une fois qu'il a commencé à s'estomper.

$('#message').mouseenter(function() {
  clearTimeout(this.timeout);
});
$('#message').mouseleave(function() {
  this.timeout = setTimeout("$('#message').fadeOut(5000)", 3000);
});
$('#message').fadeIn(2000, function() {
  this.timeout = setTimeout("$('#message').fadeOut(3000)", 3000);
});

48voto

PetersenDidIt Points 17498

27voto

karim79 Points 178055

De plus, vous pouvez tester si un élément est au milieu d'une animation à l'aide du sélecteur :animated :

 $('#message').mouseover(
    function () {
      if($(this).is(':animated')) {
         $(this).stop().animate({opacity:'100'});
      }
    }
);
 

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