1

点击后我有这个动作:

  remote_top.on('click',function(){
        if (program_changer_block.css('display','block')){
            var g_timer = null;
            clearTimeout(g_timer);
            setTimeout(function(){
                program_changer_block.fadeOut();
            }, 5100);
        }
        else if (program_changer_block.css('display','none')){
            setTimeout(function(){
                program_changer_block.fadeIn();
            }, 300);
        }
   });

我想要做的是每次点击后清除超时。现在经过一些快速点击后,我的块在从第一次点击计算的 5100 毫秒后隐藏。每次单击后如何重新启动此超时?出事了,你能帮帮我吗?

4

2 回答 2

2

setTimeout()函数返回超时 ID。只需将其存储在您的g_timer变量中并使其成为全局变量:

  var g_timer;
  remote_top.on('click',function(){
        if (program_changer_block.css('display','block')){
            clearTimeout(g_timer);
            g_timer = setTimeout(function(){
                program_changer_block.fadeOut();
            }, 5100);
        }
        else if (program_changer_block.css('display','none')){
            g_timer = setTimeout(function(){
                program_changer_block.fadeIn();
            }, 300);
        }
   });
于 2013-02-10T16:25:20.600 回答
0

您是否尝试过使用 clearQueue 和 delay 直接控制队列?

remote_top.on('click',function(){
    if(program_changer_block.css('display','block')){
        program_changer_block.stop(true,true).delay(5100).fadeOut();
    }
    else if(program_changer_block.css('display','none')){
        program_changer_block.stop(true,true).delay(300).fadeIn();
    }
});

stop() 中的第一个 true 意味着 .clearQueue()

于 2013-02-10T16:26:18.367 回答