我有一个菜单,它有一个子菜单,当你点击一个按钮时,它就会滑出。我想让它在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);
}
})发布于 2017-08-01 09:17:50
问题是每次调用单击侦听器函数时都会创建一个新的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);
}
})https://stackoverflow.com/questions/45427447
复制相似问题