如何取消jQuery fadeOut()一旦开始?

我有一个基本的div元素来表示一个消息,我显示了几秒钟,然后淡出使用

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

如果用户将鼠标hover在div上,我希望能够取消淡出。

一旦fadeOut方法开始淡入div,我怎样才能取消淡出

我现有的代码,如下所示,如果鼠标在显示时进入div,但我需要允许用户在开始淡入淡出之后hover在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); }); 

另外,你可以使用:animated selector来testing一个元素是否在animation的中间。

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