Javascript 如何确保我的事件始终在jQuery中触发?[悬停回调未触发]

Javascript 如何确保我的事件始终在jQuery中触发?[悬停回调未触发],javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个BG图像动画,它依赖于悬停回调来恢复到原始状态。如果我在链接上快速移动鼠标,悬停状态将保持不变。我的猜测是,我在第一个动画完成之前将鼠标移开,因此回调不会注册 有没有更可靠的方法来编写这个函数 $('.nav li a').hover(function() { $(this).addClass('hovered', 300); }, function() { $(this).removeClass('hovered', 300); }); (它使用支持add/remov

我有一个BG图像动画,它依赖于
悬停
回调来恢复到原始状态。如果我在链接上快速移动鼠标,悬停状态将保持不变。我的猜测是,我在第一个动画完成之前将鼠标移开,因此回调不会注册

有没有更可靠的方法来编写这个函数

$('.nav li a').hover(function() {
    $(this).addClass('hovered', 300);
}, function() {
    $(this).removeClass('hovered', 300);
});
(它使用支持add/removeClass上的速度参数)

此处可测试:

addClass方法中的300值是多少?它不需要两个参数。。只有一个
Api参考: (好的,注意到插件)

它对我很管用。。无论我移动鼠标的速度有多快,所有链接都会恢复为其原始图像

更新

好的,我现在明白问题了

  • Chrome还可以(似乎是唯一一款)
  • Firefox显示了这个问题
  • IE显示了问题所在
更新2 在我看来,问题在于你使用的插件。。它将忽略对同一对象的排队请求,直到当前动画完成。。因此,如果您在第一个任务完成之前悬停,它将不会恢复正常

很抱歉,我无法在这方面提供更多帮助。

addClass方法中的300值是多少?它不需要两个参数。。只有一个
Api参考: (好的,注意到插件)

它对我很管用。。无论我移动鼠标的速度有多快,所有链接都会恢复为其原始图像

更新

好的,我现在明白问题了

  • Chrome还可以(似乎是唯一一款)
  • Firefox显示了这个问题
  • IE显示了问题所在
更新2 在我看来,问题在于你使用的插件。。它将忽略对同一对象的排队请求,直到当前动画完成。。因此,如果您在第一个任务完成之前悬停,它将不会恢复正常


很抱歉,我无法在这方面提供更多帮助。

这是一个常见的问题,恐怕无法解决,这取决于浏览器是否能够跟上事件的发展,如果浏览器无法跟上,那么您就倒霉了

不过,这也可能是jQuery的错。很难说不深入源代码。无论如何,有一个简单的解决方法:

$('.nav li a').hover(function() {
    // When element is hovered, remove hovered state from all elements..
    $('.hovered').removeClass('hovered');
    // ..and add it to this one.
    $(this).addClass('hovered', 300);
}, function() {
    // This is only needed when exiting an element and not enterin another one
    $(this).removeClass('hovered', 300);
});

这可能不是百分之百确定的,但比您当前的情况要好。

这是一个常见问题,恐怕无法解决,这取决于浏览器是否能跟上事件的发展,如果不能,那么您就走运了

不过,这也可能是jQuery的错。很难说不深入源代码。无论如何,有一个简单的解决方法:

$('.nav li a').hover(function() {
    // When element is hovered, remove hovered state from all elements..
    $('.hovered').removeClass('hovered');
    // ..and add it to this one.
    $(this).addClass('hovered', 300);
}, function() {
    // This is only needed when exiting an element and not enterin another one
    $(this).removeClass('hovered', 300);
});

这可能不是100%确定的,但它比您当前的插件要好。

请参阅我对该插件的评论。我添加了一个链接。链接是否为您上下滚动?他们不粘吗?重击。我试过FF3和Safari4,如果我跑得快的话,它们都能坚持。谢谢IE测试;我在OSX上。请看我对插件的评论。我添加了一个链接。链接是否为您上下滚动?他们不粘吗?重击。我试过FF3和Safari4,如果我跑得快的话,它们都能坚持。谢谢IE测试;我在OSX上。这对我来说是个好的开始,谢谢。我还将时间转换加快到1/10秒(100秒),所以发生这种情况的可能性较小。这两个变化使它更加实用;谢谢。这对我来说是个好的开始,谢谢。我还将时间转换加快到1/10秒(100秒),所以发生这种情况的可能性较小。这两个变化使它更加实用;谢谢