2009-09-14 28 views
40

我有一个基本的div元素来表示一个消息,我展示了几秒钟,然后用你如何取消一个jQuery淡出()一旦开始?

$('#message').fadeOut(5000); 

我希望能够取消淡出如果用户在悬停他们的鼠标淡出出来DIV。

如何取消淡出一旦淡出方法已经开始褪色了DIV?

我现有的代码,如果鼠标在显示时进入div,但我需要考虑如果用户在开始淡出时悬停在div上。

$('#message').mouseenter(function() { 
    clearTimeout(this.timeout); 
}); 
$('#message').mouseleave(function() { 
    this.timeout = setTimeout("$('#message').fadeOut(5000)", 3000); 
}); 
$('#message').fadeIn(2000, function() { 
    this.timeout = setTimeout("$('#message').fadeOut(3000)", 3000); 
}); 

回答

39
+3

真好!使用停止,这得到哟恢复正常的功能的mouseenter: $(本).stop()动画({不透明度: '100'}); – daddywoodland 2009-09-14 12:48:34

+0

我不能相信我没有发现一个在jQuery的文档!它必须是星期一。谢谢。 。 – 2009-09-14 13:33:13

+1

具体来说,@ daddywoodland的.stop()动画({不透明度: '100'})组合就是允许任何fadIn /淡出重新启动基于你的扳机。很棒。 – cbmtrx 2015-10-27 15:00:00

18

此外,您还可以使用:animated选择测试,如果一个元素是在动画中的中间:

$('#message').mouseover(
    function() { 
     if($(this).is(':animated')) { 
     $(this).stop().animate({opacity:'100'}); 
     } 
    } 
); 
+0

这是很方便的知道,谢谢。 – 2009-09-14 13:33:59

相关问题