如何停止并启动setInterval
?
假设我有textarea
。我想停止焦点setInterval
并重新启动setInterval
模糊(使用jQuery)。
答案 0 :(得分:167)
您必须在启动时存储间隔的计时器ID ,稍后您将使用此值来停止它,使用clearInterval
功能:
$(function () {
var timerId = 0;
$('textarea').focus(function () {
timerId = setInterval(function () {
// interval function body
}, 1000);
});
$('textarea').blur(function () {
clearInterval(timerId);
});
});
答案 1 :(得分:24)
这是基于CMS的答案。问题要求计时器重新启动模糊并停在焦点上,所以我把它移动了一点:
$(function () {
var timerId = 0;
$('textarea').focus(function () {
clearInterval(timerId);
});
$('textarea').blur(function () {
timerId = setInterval(function () {
//some code here
}, 1000);
});
});
答案 2 :(得分:18)
将setInterval
的返回值存储在变量中,稍后再使用它来清除间隔。
var timer = null;
$("textarea").blur(function(){
timer = window.setInterval(function(){ ... whatever ... }, 2000);
}).focus(function(){
if(timer){
window.clearInterval(timer);
timer = null
}
});
答案 3 :(得分:11)
setInterval返回一个id,您可以使用它来取消clearInterval()
的间隔