Вот рабочая скрипка .Ключ к .stop()
анимации перед добавлением новой в очередь:
$(this).stop(true, true).animate(/***/);
Однако;это вызывает проблемы, потому что одновременно нужно запускать несколько анимаций, поэтому вызов .stop()
помешает неправильной анимации.Поэтому разные анимации должны быть помещены в разные анимации queues
:
$(this).stop('jump', true, true).animate({/***/}, {
queue: 'jump'
});
Если вы используете другую очередь по умолчанию (fx
), вам придется .dequeue()
их вручную.
$(this).stop('jump', true, true).animate({/***/}, {
queue: 'jump'
})
.dequeue('jump');
[Редактировать] Что касается первой проблемы, я думаю, что лучшее решение - .delay()
анимация затухания, чтобы дать курсору некоторое время для перехода к следующему блоку.Вот скрипка с включенным:
$(this).stop('fade', true).delay(300, 'fade').animate({ //***
Это имеет некоторые недостатки, в основном из-за того, что .stop()
не отменяет тайм-ауты, которые были установлены .delay()
.Мое лучшее решение - выбрать между «эффектом вспышки» из первой скрипки или эффектом замедленного появления из второй скрипки.