如何使jquery倒计时计时器连接到ajax操作


How to make a jquery countdown timer connected to ajax action?

我想要完成的是在我的系统上,当你点击一个动作时,菜单会被隐藏(禁用),并被倒计时计时器取代。倒计时计时器结束后,我希望菜单取消隐藏并向下滑动。

当我执行操作时,我会隐藏菜单,你运行得很好。但当谈到倒计时时,我在谷歌上搜索了一些,发现了这个,并将其更改为试用版。但这似乎没有任何作用。

这是计时器代码:

 var coolDownTime = 10;
    function coolDownTimer() {
        setTimeOut (function() {
            if(coolDownTime != 0) {
                coolDownTime--;
                coolDownTimer();
            } else {
                $("#target_area").slideDown('medium');
            }
        }, 1000);
    }

以下是我隐藏菜单的方法:

 $('[name=action]').click(function () { 
   $("#target_area").slideUp('medium');
   return false;
 });

我在这里做了一些其他ajax来执行一些操作,然后向上滑动菜单。

此时,我希望倒计时开始,当倒计时结束时,我希望行动回来,这样他们就可以选择再次继续。

我认为当前方法的问题是,如果我把计时器代码放在同一个click语句中,我会把菜单隐藏在其中,它就会完全停止工作。我很失落。有人做过类似的事情并知道解决方案吗?

经过一点挖掘和逻辑,我想出了这个。

$('.trigger').on('click', function(e) {
    $(this).html('show')
    $('.show').slideUp('medium');
    var count = 10,
        counter = setInterval(timer, 1000);
    function timer() {
        count--;
        if (count <= 0) {
            clearInterval(counter);
            $('.trigger').html('hide');
            $('.show').slideDown('medium');
            return;
        }
        console.log(count);
        $('.timer').html(count);
    }
});

Fiddle