如何停止“setInterval”

IT技术 javascript jquery setinterval
2021-02-18 06:03:57

如何停止和启动setInterval

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

4个回答

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

$(function () {
  var timerId = 0;

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

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

});
@PatrickKlug 你的权利!if (timerId)clearInteral(timerId)需要
2021-04-17 06:03:57
我建议在if (timerId)clearInteral(timerId)之前添加一个timerId = setInterval- 否则,如果焦点被调用的次数比模糊的次数多,则不能保证间隔会被清除。在测试这个时,我看到了几次这种情况(在 IE10 上)。
2021-05-06 06:03:57

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

$(function () {
  var timerId = 0;

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

  $('textarea').blur(function () {
    timerId = setInterval(function () {
     //some code here 
    }, 1000);
  });
});

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

var timer = null;
$("textarea").blur(function(){
    timer = window.setInterval(function(){ ... whatever ... }, 2000);
}).focus(function(){
    if(timer){
       window.clearInterval(timer);
       timer = null
    }
});

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

$.live目前不支持focusblur事件。
2021-04-15 06:03:57
但是我如何用 $.live 或 $.listen 来实现这个
2021-04-30 06:03:57