首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >clearTimeout()的行为不符合预期

clearTimeout()的行为不符合预期
EN

Stack Overflow用户
提问于 2017-08-01 09:09:41
回答 1查看 34关注 0票数 0

我有一个菜单,它有一个子菜单,当你点击一个按钮时,它就会滑出。我想让它在7秒后滑回来,如果它还没有被点击回来。我想在点击时重置计时器,这样如果再次点击,计时器就会重新开始。

代码语言:javascript
复制
    $(".connect").click(function(){
     if($(".slidy-social").css("right") === "0px"){
       $(".slidy-social").animate({right: "200px"}, 250);
       var timer = setTimeout(function(){
         if($(".slidy-social").css("right") !== "0px"){
           $(".slidy-social").animate({right: "0px"}, 250)
         }
       }, 7000)
     }
     else{
       clearTimeout(timer);
       $("#social").animate({right: "0px"}, 300);
     }
   })
EN

回答 1

Stack Overflow用户

发布于 2017-08-01 09:17:50

问题是每次调用单击侦听器函数时都会创建一个新的timer变量。您需要在函数外部声明变量,以便每次都是相同的变量。

代码语言:javascript
复制
var timer;
$(".connect").click(function() {
  if ($(".slidy-social").css("right") === "0px") {
    $(".slidy-social").animate({
      right: "200px"
    }, 250);
    timer = setTimeout(function() {
      if ($(".slidy-social").css("right") !== "0px") {
        $(".slidy-social").animate({
          right: "0px"
        }, 250)
      }
    }, 7000)
  } else {
    clearTimeout(timer);
    $("#social").animate({
      right: "0px"
    }, 300);
  }
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45427447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档