Вы ищете функцию stop
, за которой, возможно, следует show
(или hide
, или css
, зависит от того, в каком состоянии вы хотите, чтобы opacity
закончил) .
function hoverOpacity() {
$('#fruit').mouseover(function() {
$(this).stop(true).animate({opacity: 0.5}, 1500);
});
$('#fruit').mouseout(function() {
$(this).stop(true).animate({opacity: 1}, 1500);
});
}
true
говорит анимации прыгать до конца. Если это единственная анимация на элементе, она должна быть в порядке; в противном случае, как я уже сказал, вы можете посмотреть на css
, чтобы явно установить желаемую непрозрачность.
Отдельно можно использовать mouseenter
и mouseleave
вместо mouseover
и mouseout
по двум причинам: 1. mouseover
повторяется, когда мышь перемещается по элементу, и 2. И mouseover
, и mouseout
bubble , и поэтому, если у вашего элемента "fruit" есть дочерние элементы, вы также будете получать события от них, что, как правило, дестабилизирует этот тип анимации.