Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Предотвращение многократного воспроизведения анимации (https://javascript.ru/forum/jquery/17497-predotvrashhenie-mnogokratnogo-vosproizvedeniya-animacii.html)

titansword 21.05.2011 21:28

Предотвращение многократного воспроизведения анимации
 
Я догадываюсь, что эта проблема неоднократно пережевывалась, но к сожалению, я не нашел решения для своего случая.
$(".relat").hover(

  function () {

	  $(this).find('.abs').slideDown("slow");
  
  }, 
  function () {
  
	  $(this).find('.abs').slideUp("slow"  );
	  
  }
);

При многократном наведении курсора на объект, образуется очередь из анимаций, которые проигрываются даже если курсор уже давно не на объекте.
Пробовал использовать .stop(true), но если прервать появление объекта на пол пути, то при следующем вызове он тоже будет появляться только на половину.
.stop(true,true) это практически решение проблемы, но хотелось бы что бы не просто применялся конечный эффект проигрываемой анимации, а что бы анимация с честно проигрывалась до конца.

walik 21.05.2011 21:37

Попробуйте так:
$(".relat").hover(
 
  function () {
 
      $(this).find('.abs').filter(':hidden').slideDown("slow");
   
  },
  function () {
   
      $(this).find('.abs').not(':hidden').slideUp("slow"  );
       
  }
);

titansword 21.05.2011 21:42

walik,
Да, это решило проблему. Премного благодарен.
Хотя и у этого решения есть минус. Если во врем работы slideUp навести курсор на объект, то событие hover уже работать не будет. Нужно будет снова убрать и навести курсор на объект, что бы событие сработало.


Часовой пояс GMT +3, время: 23:55.