2010-10-05 64 views
2

我需要一些帮助.. 是否可以取消链接延迟?Jquery .delay()。fadeOut取消/清除队列..可能吗?怎么样?

Mn.Base.TopBox.show = function(timedur){ 
    $('#element').fadeIn().delay(timedur).fadeOut(); 
} 


Mn.Base.TopBox.cancelFadeout = function(){ 

} 

我读到排队并尝试了一些不同的方法,但我没有成功...

$('#element').stop(); 

    $('#element').queue('fx', []); 
提前

感谢,

佩德罗

回答

9

它不是't,.delay()不能和其他任何东西一起玩,因为定时器不停地滴答作响,而且无论您是否清除了队列并添加了一个全新的队列,都会执行。

这是更好地使用setTimeout()直接,如果你打算取消,例如:

Mn.Base.TopBox.show = function(timedur){ 
    $('#element').fadeIn(function() { 
    var elem = $(this); 
    $.data(this, 'timer', setTimeout(function() { elem.fadeOut(); }, timedur)); 
    }); 
} 

Mn.Base.TopBox.cancelFadeout = function(){ 
    clearTimeout($('#element').stop().data('timer')); 
} 

这样做是设置定时器,它使用$.data(),并clering动画的时候,我们俩都调用存储.stop()停止处理任何事情,停止该计时器。

这里仍然有潜在这里的问题,如果你很快发射,在这种情况下,你想切换到存储延迟数组,并清除所有。

+0

它的工作原理=)感谢您的帮助! – 2010-10-05 13:30:27

-1

只需将延迟(...)替换为动画({display:“block”},timedur)

相关问题