Анимация остановки при наведении курсора мыши при выходе из jQuery

#javascript #jquery

#javascript #jquery

Вопрос:

У меня есть что-то вроде:

 $('.test').hover(
 function(){
  $(this).animate(...);
 }, function(){
  $(this).animate(...);
 }
);
  

Но если пользовательская мышь уходит до завершения анимации, анимация продолжается. Если я быстро и быстро наведу курсор и откреплю элемент, анимации повторяются несколько раз после того, как мышь покинула элемент. Как я могу остановить анимацию после того, как мышь покинула элемент?

Ответ №1:

Вы ищете stop():

 $('.test').hover(
 function(){
  $(this).stop(true).animate(...);
 }, function(){
  $(this).stop(true).animate(...);
 }
);
  

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

Вторым необязательным параметром является jumpToEnd . Если false (или опущено), анимация останавливается на своих дорожках. Если true , он перейдет в состояние, в котором находится объект в конце анимации. Вы, вероятно, захотите оставить это, хотя это зависит от того, какие типы анимаций вы делаете.

Например, предположим, что вы переходите от 0% непрозрачности к 100% непрозрачности, и при вызове у вас 75% непрозрачности stop() , затем вы вызываете fade до 0% непрозрачности. Без clearQueue этого объект продолжит исчезать до 100%, а затем снова исчезнет до 0%. При clearQueue этом объект перестанет исчезать на 75%, а затем сразу же начнет исчезать до 0%. Если jumpToEnd значение true, непрозрачность объекта немедленно изменится с 75% на 100%, а затем снова уменьшится до 0%.