jQuery mouseleave带有动画元素的bug
我碰到了一个奇怪的问题 如果移动鼠标,jQuery 1.4.1 mouseenter/mouseleave事件会正确触发,这不是什么大问题。但是,在某些浏览器中,当光标本身保持静止但元素被animate()移开时,它会出现错误 因此,想象一下这样的代码:jQuery mouseleave带有动画元素的bug,jquery,jquery-animate,mouseleave,Jquery,Jquery Animate,Mouseleave,我碰到了一个奇怪的问题 如果移动鼠标,jQuery 1.4.1 mouseenter/mouseleave事件会正确触发,这不是什么大问题。但是,在某些浏览器中,当光标本身保持静止但元素被animate()移开时,它会出现错误 因此,想象一下这样的代码: jQuery('somelement').bind( { mouseenter: function(e) { log.debug("enter"); $(this).animate({left: 9999}, 2000
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事件
有没有办法修复它?不幸的是,mouseover、mouseleave、mouseover和mouseout函数似乎都绑定到鼠标,而不是实际对象。这在使用内联选项onmouseout等时也是如此 据我所知,对于你正在尝试做的事情,实际上没有一个很好的选择。如果这是一个绝对必要的函数,我会这样做
希望这是有道理的。如果我今天有更多的时间,我将制作一个提琴示例,这样您就可以看到它是如何工作的。刚才也谈到了这个问题。:)这里有一把小提琴来说明这个问题。