Вы можете использовать stop()
, чтобы остановить любую текущую анимацию в очереди. Обратите внимание, что stop()
останавливает любую текущую анимацию, где бы она ни находилась, поэтому в этом случае нам нужно остановить анимацию, и показывают элемент.
(Кроме того, прежде чем решить проблему поведения, вы, возможно, уже захотите использовать stop()
для предотвращения отскакивающих эффектов, если пользователь очень быстро вводит и выключает кнопку):
$("#button").hover(function(){
$("#info").stop(true,true).slideDown("fast");
}, function(){ //the handlerOut
$("#info").stop(true,true).delay(1000).slideUp("fast");
});
Затем, чтобы получить желаемое поведение, нам нужно добавить обработчик наведения на #info
, который останавливает текущую анимацию, а затем либо отображает, либо скрывает элемент информации, в зависимости от ситуации. Поскольку у нас уже есть обработчик, который делает это, вы можете просто добавить селектор #info
к вызову hover:
$("#button, #info").hover(function(){
$("#info").stop(true,true).slideDown("fast");
}, function(){ //the handlerOut
$("#info").stop(true,true).delay(1000).slideUp("fast");
});
Вот рабочий jsfiddle