112

如何停止和启动setInterval

假设我有一个textarea. 我想停止setInterval焦点并重新setInterval开始模糊(使用 jQuery)。

4

4 回答 4

184

您必须在启动时存储间隔的计时器 id,稍后您将使用此值来停止它,使用以下clearInterval函数:

$(function () {
  var timerId = 0;

  $('textarea').focus(function () {
    timerId = setInterval(function () {
      // interval function body
    }, 1000);
  });

  $('textarea').blur(function () {
    clearInterval(timerId);
  });

});
于 2009-12-02T07:16:23.087 回答
29

这是基于CMS的回答。问题要求计时器在模糊处重新启动并在焦点处停止,所以我将它移动了一点:

$(function () {
  var timerId = 0;

  $('textarea').focus(function () {
    clearInterval(timerId);
  });

  $('textarea').blur(function () {
    timerId = setInterval(function () {
     //some code here 
    }, 1000);
  });
});
于 2012-06-30T16:22:40.563 回答
19

将返回值存储setInterval在一个变量中,稍后使用它来清除区间。

var timer = null;
$("textarea").blur(function(){
    timer = window.setInterval(function(){ ... whatever ... }, 2000);
}).focus(function(){
    if(timer){
       window.clearInterval(timer);
       timer = null
    }
});
于 2009-12-02T07:17:22.087 回答
12

setInterval 返回一个 id,您可以使用它来取消间隔 clearInterval()

于 2009-12-02T07:17:58.327 回答