停止计时器

时间:2016-04-12 19:57:21

标签: javascript jquery

我正在使用这个JSFiddle,当我的鼠标离开textarea时,它会关闭。但是,如果我将鼠标悬停在它上面,我无法找到取消此计时器的方法。我甚至试过here的一些例子。这是关闭文本框的代码 -

function close() {
     setTimeout(function() {
       $(Img).css("transform", "rotateX(0deg)");
       $(Txt).css("transform", "rotateX(90deg)");
    }, 1000);
  }

$(Txt).on("mouseleave", function() {
   close();
   $(Txt).blur();
});

3 个答案:

答案 0 :(得分:1)

您从W3Schools发布的链接正是您所需要的......

setTimeout()会返回一个参考值,您可以稍后将其传递给clearTimeout()以取消计时器。

var timerID; //set outside the function

function close() {
     timerID = setTimeout(function() {
       $(Img).css("transform", "rotateX(0deg)");
       $(Txt).css("transform", "rotateX(90deg)");
    }, 1000);
  }

$(Txt).on("mouseleave", function() {
   close();
   $(Txt).blur();
});

//somewhere else do this...
clearTimeout(timerID);

答案 1 :(得分:0)

setTimeout函数返回处理程序,稍后您可以使用该处理程序重置计时器。

例如,

var myVar;

function myFunction() {
    myVar = setTimeout(function(){ alert("Hello") }, 3000);
}

function myStopFunction() {
    clearTimeout(myVar);
}

答案 2 :(得分:0)

你试过了吗?

var myTimeout;

function close() {
     myTimeout = setTimeout(function() {
       $(Img).css("transform", "rotateX(0deg)");
       $(Txt).css("transform", "rotateX(90deg)");
    }, 1000);
  }

$(Txt).on("mouseleave", function() {
   close();
   $(Txt).blur();
}).on("mouseenter", function() {
   clearTimeout(myTimeout);
});