В веб-приложении, над которым я работаю, я хочу создать несколько слайдеров div
, которые будут перемещаться вверх и вниз с помощью наведения и удаления мыши (соответственно). В настоящее время я реализовал его с помощью функции hover()
JQuery, используя animate()
. и уменьшая/увеличивая его значение top
css по мере необходимости. Это работает довольно хорошо, на самом деле.
Проблема в том, что он имеет тенденцию застревать. Если вы наведете на него указатель мыши (особенно внизу) и быстро удалите его, он будет непрерывно скользить вверх и вниз и не остановится, пока не завершит 3-5 циклов. Мне кажется, что проблема может быть связана с тем, что одна анимация запускается до завершения другой (например, две пытаются бежать, поэтому они скользят вперед и назад).
Хорошо, теперь о коде. Вот базовый JQuery, который я использую:
$('.slider').hover(
/* mouseover */
function(){
$(this).animate({
top : '-=120'
}, 300);
},
/* mouseout*/
function(){
$(this).animate({
top : '+=120'
}, 300);
}
);
Я также воссоздал поведение в JSFiddle.
Любые идеи о том, что происходит? :)
== РЕДАКТИРОВАТЬ == ОБНОВЛЕНО JSFiddle
div
имеетheight
достаточно большой, чтобы не срабатывал mouseleave. Я обновил JSFiddle, чтобы отразить это. - person Miguel   schedule 04.06.2012.stop(true,true)
, чтобы предотвратить резервное копирование очереди анимации. jsfiddle.net/W5EsJ/18 - person Kevin B   schedule 04.06.2012div
исчезает из поля зрения. Если бы вы опубликовали это как ответ, я был бы более чем счастлив принять его. - person Miguel   schedule 04.06.2012