Как вы отменяете jQuery fadeOut () после его начала? - PullRequest
44 голосов
/ 14 сентября 2009

У меня есть базовый элемент div для представления сообщения, которое я показываю в течение нескольких секунд, а затем исчезаю, используя

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

Я хочу иметь возможность отменить затухание, если пользователь наводит указатель мыши на элемент div.

Как я могу отменить постепенное исчезновение , как только метод fadeOut начал исчезать в div?

Мой существующий код, приведенный ниже, работает, если мышь входит в div, пока он отображается, но мне нужно разрешить, если пользователь наводит курсор на div, когда он начинает исчезать.

$('#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);
});

Ответы [ 2 ]

46 голосов
/ 14 сентября 2009

Проверьте функцию остановки

http://docs.jquery.com/Effects/stop#clearQueuegotoEnd

23 голосов
/ 14 сентября 2009

Кроме того, вы можете проверить, находится ли элемент в середине анимации, используя селектор :animated:

$('#message').mouseover(
    function () {
      if($(this).is(':animated')) {
         $(this).stop().animate({opacity:'100'});
      }
    }
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...