私は奇妙な問題にぶつかりました。
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: マウス自体が静止している場合でも、カーソルがアニメーション化された要素を離れると、期待どおりに mouseleave が発生しました。
IE6、IE8、Opera 9/10、Safari 3、Chrome: 要素がウィンドウの外にある場合でも、mouseleave は発生しません。マウスを少し動かすと、正しい mouseleave イベントがトリガーされます。
それを修正する方法はありますか?