Jquery .delay().fadeOut取消/清除队列..有可能吗?怎么样?

Ped*_*Gil 2 javascript jquery delay

我需要一些帮助..是否有可能取消链接延迟?

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


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

}
Run Code Online (Sandbox Code Playgroud)

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

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

    $('#element').queue('fx', []);
Run Code Online (Sandbox Code Playgroud)

提前致谢,

佩德罗

Nic*_*ver 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'));
}
Run Code Online (Sandbox Code Playgroud)

这样做是设置计时器并使用它来存储它$.data(),并且在调用动画时,我们都要求.stop()停止正在进行的任何操作,停止该计时器.

如果你快速解决这个问题,那么这里仍有潜在的问题,在这种情况下,你想要切换到存储一系列延迟,并清除它们.