jquery - 点击时jQuery更新时间间隔
问题描述
我在#animation-section中有一个动画,它将在 15 秒后淡出。像下面的工作代码:
var time = 15000;
$('#animation-section').delay(time).fadeOut(600);
因为在这个快速的互联网时代,15 秒是很长的时间。此外,应该有一种方法可以通过按下按钮 (#skip) 来跳过此动画。
$( "#skip" ).click( function () {
time = 500;
$('#animation-section').delay(time).fadeOut(600);
} );
当这个#skip按钮被按下时,动画应该停止并且#animation-section应该立即fadeOut,我确实尝试通过将时间变量从15秒更新到0.5秒来实现这一点,但似乎时间已经设置好了到 15 秒。
如何使此单击功能更新或覆盖#animation-section 时间延迟?
解决方案
我认为 jQuery 的 .delay() 函数在这里不是最好的做法,因为你不能打破/停止 jQuery 延迟。
来源:
.delay() 方法最适合在排队的 jQuery 效果之间进行延迟。因为它是有限的——例如,它不提供取消延迟的方法——.delay() 不能替代 JavaScript 的本机 setTimeout 函数,这可能更适合某些用例。
使用setTimeout()函数就可以了。
尝试这个:
var time = 15000;
setTimeout(() => { //this sets a 'delay' of 15000ms(time)
$("#animation-section").fadeOut(600);
}, time);
$("#skip").click(function() {
$("#animation-section").fadeOut(600); //directly fades out the #animation-section without any delay
});
例子:
var time = 15000;
setTimeout(() => { //this sets a 'delay' of 15000ms(time)
$("#animation-section").fadeOut(600);
}, time);
$("#skip").click(function() {
$("#animation-section").fadeOut(600);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="animation-section" style="background: blue; width: 100px; height: 100px;">
</div>
<a href="javascript:void(0)" id="skip">Skip animation</a>
推荐阅读
- java - Java 原生接口:对象传递
- bash - 多个 if 条件在 shell 脚本中引发错误
- assembly - 程序集 8086 - 将两个矩阵相乘
- c# - ANTLR4 语法集成复杂性,用于选择与删除
- java - 启动 HBASE,java.lang.ClassNotFoundException: org.apache.htrace.SamplerBuilder
- python - 简单的 matplotlib.animation 图变得非常快并且比停止更慢
- javascript - 如何在前端捕获未定义的路由?
- r - 分组ggplot中的备用刻度标签以避免R中的重叠
- c# - 为什么搜索操作在 mvc 中不起作用?
- vb.net - 当工作日是星期五或星期六时,尝试在总数中添加 180