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);
        }
   });

私がやろうとしているのは、クリックするたびにタイムアウトをクリアすることです。いくつかの高速クリックの後、最初のクリックから計算された 5100ms 後にブロックが非表示になります。クリックするたびにこのタイムアウトを再開するにはどうすればよいですか? 何かがおかしい、助けてくれる?

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 に答える