jQuery - отключить щелчок, пока не будут завершены все связанные анимации

Question

Решение ниже предназначено для скольжения внизgroupDiv отображениеdiv1 и достаточно места дляdiv2 скользить внутрь. Все это достигается цепочкой анимаций на#Link.Click() элемент.

Кажетсяbug outВпрочем, когдаlink is clicked rapidly, Есть ли способ предотвратить это? Возможно, отключив функцию Click, покаchained анимации завершены? В настоящее время у меня есть чеки, но они, похоже, не выполняют свою работу :(

Вот код, который я использую:

Custom animate functions.
//Slide up or down and fade in or out
jQuery.fn.fadeThenSlideToggle = function(speed, easing, callback) {
    if (this.is(":hidden")) {
        visibilityCheck("show", counter--);
        return this.slideDown({duration: 500, easing: "easeInOutCirc"}).animate({opacity: 1},700, "easeInOutCirc", callback);
    } else {
        visibilityCheck("hide", counter++);
        return this.fadeTo(450, 0, "easeInOutCirc").slideUp({duration: 500, easing: "easeInOutCirc", complete: callback});
    }
};

//Slide off page, or into overflow so it appears hidden.
jQuery.fn.slideLeftToggle = function(speed, easing, callback) {
    if (this.css('marginLeft') == "-595px") {
        return this.animate({marginLeft: "0"}, speed, easing, callback);
    } else {
        return this.animate({marginLeft: "-595px"}, speed, easing, callback);
    }
};
In the dom ready, i have this:
$('#Link').toggle(
    function() {
        if (!$("#div2 .tab").is(':animated')) {
            $("#GroupDiv").fadeThenSlideToggle(700, "easeInOutCirc", function() {$('#div2 .tab').slideLeftToggle();});
        }
    },
    function(){
        if (!$("#groupDiv").is(':animated')) {
            $('#div2 .tab').slideLeftToggle(function() {$("#groupDiv").fadeThenSlideToggle(700, "easeInOutCirc", callback);} );
        }
    }
);
HTML structure is this:
<div id="groupDiv">
     <div id="div1">
          <div class="tab"></div>
     </div>
     <div id="div2">
          <div class="tab"></div>
     </div>
</div>

Ответы на вопрос(6)

Ваш ответ на вопрос