我们可以暂停 jQuery 的延迟吗?

Posted

技术标签:

【中文标题】我们可以暂停 jQuery 的延迟吗?【英文标题】:Can we pause a delay in jQuery? 【发布时间】:2019-05-12 19:33:21 【问题描述】:

我有一个设置为 display:none 的按钮(带有 ID 继续)。单击 Vimeo 的“播放”按钮后,此按钮会延迟 10 秒出现。

是否可以在视频中点击“暂停”后暂停延迟,让计时器停止并再次点击“播放”重新启动计时器?

这是我到目前为止所拥有的(另请参阅fiddle):

<script>
    var iframe = document.querySelector('iframe');
    var player = new Vimeo.Player(iframe);

    player.on('play', function() 
  jQuery('#proceed').delay(10000).show(0);   
    );
</script>

【问题讨论】:

你最好使用超时。 ***.com/questions/7929266/jquery-delay-how-to-stop-it jQuery delay() - how to stop it?的可能重复 【参考方案1】:

您不能暂停 jQuery .delay()。但是,如果您以间隔手动执行操作,则可以:

//prep
let
int,
secs = 10,
elapsed = 0
;

//on play, start/resume interval timer - when we get to 10, show button
player.on('play', () => 
    int = setInterval(() => 
        elapsed++;
        if (elapsed == secs) 
            jQuery('#proceed').show();
            clearInterval(int);
        
    , 1000);
);

//pause interval timer on pause
player.on('pause', () => 
    clearInterval(int);
);

如果您重新启动视频或将播放头移回 0 秒,您可能需要完全重置间隔。

【讨论】:

谢谢,这很好。但我猜 Vimeo 没有“player.on('replay', function()”?【参考方案2】:

没有。

.delay() 方法最适合在队列 jQuery 之间进行延迟 效果。因为它是有限的——例如,它没有提供一种方法来 取消延迟——.delay() 不是 javascript 原生的替代品 setTimeout 函数,可能更适合某些用途 案例。

https://api.jquery.com/delay/

【讨论】:

以上是关于我们可以暂停 jQuery 的延迟吗?的主要内容,如果未能解决你的问题,请参考以下文章

在jQuery中添加音频暂停前的延迟

可以取消 jQuery 延迟吗?

我可以延迟 jquery 的 keyup 事件吗?

深入学习jQuery动画控制

深入学习jQuery动画控制

C# 延时处理或者暂停执行