Я столкнулся со странной проблемой.
jQuery 1.4.1 События mouseenter / mouseleave запускаются корректно, если мышь перемещается, это не имеет большого значения. Тем не менее, в некоторых браузерах возникают ошибки, когда сам курсор остается статичным, но элемент перемещается с помощью animate ().
Итак, представьте код, подобный этому:
jQuery('somelement').bind(
{
mouseenter: function(e) {
log.debug("enter");
$(this).animate({left: 9999}, 2000);
},
mouseleave: function() {
log.debug("leave");
}
});
Если вы быстро наведете указатель мыши на элемент, а затем остановите его, вы получите разные результаты в зависимости от браузера.
FF3.6, Safari 4, IE7: отпуск мышью срабатывает, как и ожидалось, когда курсор покинул анимированный элемент, даже если сама мышь остановилась.
IE6, IE8, Opera 9/10, Safari 3, Chrome: mouseleave НЕ срабатывает, даже если элемент находится за пределами окна. Требуется небольшое движение мыши, чтобы вызвать правильное событие отпускания мыши.
Есть идеи как это исправить?