【发布时间】:2011-01-15 22:27:42
【问题描述】:
我遇到了一个奇怪的问题。
如果鼠标被移动,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 事件。
有什么解决办法吗?
【问题讨论】:
-
刚刚也遇到了这个问题。 :)
-
这是一个演示问题的小提琴。 jsfiddle.net/xb2pR
标签: jquery jquery-animate mouseleave