0

我有一个带有子菜单的菜单,当您单击按钮时会滑出。如果它还没有被重新点击,我希望它在 7 秒后重新滑入。我想在重新点击它时重置计时器,以便如果再次点击它,它会从头开始。

    $(".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);
     }
   })
4

1 回答 1

1

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

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);
  }
})
于 2017-08-01T01:17:49.560 回答