jquery - 如何在短暂延迟jquery后重新启动间隔
问题描述
我正在尝试在文档准备好时重复一个间隔。间隔每 3 秒重复一次,但我希望它停止 onmousemove 事件 5 秒,然后重新启动间隔。
这是我的代码:
$(document).ready(function(){
var myInterval = setInterval(alertMe, 3000);
function alertMe(){
alert('jj');
}
$(document).mousemove(function(event){
// I want delay 5 seconds and then initialize myInterval again
setTimeout(function(){}, 5000);
clearInterval(myInterval);
setInterval(alertMe, 3000);
});
});
参考答案 1:JavaScript:如何让 setInterval() 现在开始?
参考答案 2:如何使用 jQuery 等待 5 秒?
解决方案
首先请注意,您的问题说您想停止间隔mousedown
,但您的代码使用mousemove
.
其次,不要alert()
用来测试它,因为它会阻止 UI 更新。改为使用console.log()
。
最后,为了解决这个问题,setTimeout()
在鼠标事件中使用调用来延迟间隔的重新启动。尝试这个:
$(document).ready(function() {
function logMe() {
console.log('jj');
}
function startInterval() {
return setInterval(logMe, 3000);
}
var interval = startInterval(), timeout;
$(document).mousemove(function(event) {
clearInterval(interval);
clearTimeout(timeout);
timeout = setTimeout(function() {
interval = startInterval();
}, 2000); // note 2000 delay here, as it compounds with the 3000 delay on the
// interval to make a 5000ms delay
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
推荐阅读
- mysql - 如何申请疾控中心?
- flask - 400 响应 CORS 预检
- python-3.x - 根据数据或换行符将一列拆分为多列
- kubernetes - k8s:多容器 pod 上的 Liveness 和 Readiness 探测失败
- ansible - 如何循环浏览字典列表?| 列表 - 错误:如果您传递了仅包含一个元素的列表/字典,请尝试添加 wantlist=True
- vba - 使用列号而不是列字母引用范围
- javascript - AWS 放大部署
- algorithm - 我不明白我班上这个非常简单的算法入门问题,关于评估 NOT 语句
- php - 仅在 wordpress 小部件侧栏中显示基于所选父类别的 Woo Commerce 子类别
- c++ - SFML 2.0 - 窗口出现后立即关闭