2011-08-21 65 views
4

我正在使用jQuery悬停事件导致元素“发光”(不透明度从0.7更改为1),然后在离开鼠标时“不发生”。除非您意外地将鼠标放在元素上几次至几次,否则这很棒。该元素随后会随着鼠标经过它而开始闪烁(“发光”和“不发光”)。有没有办法在发生时取消jQuery的悬停事件?

这不仅是丑陋的,而且也意味着需要运行的任何其他jQuery .animate()事件必须等到这些连续的闪烁完成。一个例子可以在这里找到:http://www.rootsoftllc.com/accounts/

有没有办法告诉jQuery悬停事件,它只能运行一次,然后它必须等到它完成之前,它可以除了更多的鼠标事件?

回答

3

您可以使用.stop(true, true)停下来,疏通动画队列,像这样:

$('.window').hover(function() { 
    $(this).stop(true, true).animate({opacity: 1}, 500); 
}, function() { 
    $(this).stop(true, true).animate({opacity: 0.7}, 500); 
}); 
1

在jQuery中,你可以给每一个动画是自己的队列。我建议你给悬停效果一个自己的队列,这样它就不会干扰其他动画。然后,您可以检查鼠标在元素内的时间。如果动画未完成足够长的时间,请使用.stop()提前停止动画,然后快速将动画回复到原来的位置。

+0

你如何衡量你正在谈论的这些时间框架? – trusktr

相关问题