2010-11-14 32 views
1

我有一段简单的代码,当用户将鼠标悬停在幻灯片上的图像上时,相关文本会在图像上淡出。但是,如果用户来回徘徊几次,效果就会停止工作?jQuery - 悬停很多时间打破JavaScript?

$('div.slideshowImage').hover(function() { 
$('div.slideshowImageText').stop().fadeIn('500'); 
}, 
function() { 
$('div.slideshowImageText').fadeOut('500'); 
}); 

回答

4

你需要清除队列为好,像这样:

$('div.slideshowImage').hover(function() { 
    $('div.slideshowImageText').stop(true).fadeIn('500'); 
}, function() { 
    $('div.slideshowImageText').fadeOut('500'); 
}); 

.stop()第一个参数告诉它是否要清除队列或不...当前你停止动画,但重复的悬停将排队竞争动画与你的淡入淡出......当你不希望队列稍后执行,清除它,否则它会干扰像这里一样。

+0

谢谢。尽管如此,这似乎仍然无法解决。如果你快速将鼠标悬停在狗的图像上超过3次,它就会停止工作,你必须刷新页面才能重新获得它。http://test.clothesaid.co.uk/news/detail/vulputate-egestas-tellus -ultricies – Yammi 2010-11-14 11:54:37

+0

@Yammi - 你有*另一个*问题,其中你的淡入淡出值是从前一个淡出未被完整存储的,使用'.animate()'来表示,如下所示:http://www.jsfiddle.net/nick_craver/5Mp2v/ – 2010-11-14 12:03:34

+0

太棒了!因此拥有.unbind()会在第一个实例中删除归因于该事件的内容? – Yammi 2010-11-14 12:11:36