[英]How can I make sure a function only runs once with multiple bindings and events firing?
[英]How can I make sure my events always fire in jQuery? [Hover callback not firing]
我有一个BG图像动画,它依赖于hover
回调来恢复到其原始状态。 如果我将鼠标快速移到链接上,则将停留在悬停状态。 我的猜测是我要在第一个动画完成之前将鼠标移开,因此回调不会注册。
有没有更防弹的方式来编写此功能?
$('.nav li a').hover(function() {
$(this).addClass('hovered', 300);
}, function() {
$(this).removeClass('hovered', 300);
});
(它使用BGimg插件来支持add / removeClass上的speed参数)
可在此处测试: McPherson Industries
恐怕这是一个普遍的问题,无法解决–取决于浏览器来跟上事件的发生,如果无法解决问题,那说明您不走运。
不过,这可能也是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%肯定的,但是比您当前的要好。
addClass方法的300值是多少?
它不需要两个参数。
api参考:
http :
//api.jquery.com/addClass/
( 确定,请注意插件 )
它对我来说很好用..所有链接都恢复为原始图像,没关系,我移动鼠标有多快。
更新资料
好吧,我现在看到了问题。
更新2在我看来,问题出在您所使用的插件上。它会忽略对同一对象的排队请求,直到当前动画完成为止。因此,如果您在第一个动画完成之前将鼠标悬停,它将无法恢复正常..
我对此无能为力,对不起..
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.