我需要一些帮助.. 是否可以取消链接延迟?
Mn.Base.TopBox.show = function(timedur){
$('#element').fadeIn().delay(timedur).fadeOut();
}
Mn.Base.TopBox.cancelFadeout = function(){
}
我读到了关于排队并尝试了一些不同的方法,但我没有成功......
$('#element').stop();
$('#element').queue('fx', []);
提前致谢,
佩德罗
答案 0 :(得分:9)
事实并非如此,.delay()
与其他任何东西都不能很好地发挥作用,因为计时器一直在滴答作响,当它出现时执行.dequeue()
...无论你是否清除了队列并添加了一个全新的。
如果您打算取消,最好直接使用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()
存储它,当设置动画时,我们都会调用.stop()
来停止正在进行的任何操作,和停止那个计时器。
如果您快速解决这个问题,那么潜力仍然存在问题,在这种情况下,您需要切换到存储一系列延迟,并清除它们。