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

В дополнение к ответу Ishmaeel метод OpenMappedMachineConfiguration() будет всегда возвращаться Configuration объект. Таким образом для проверки, чтобы видеть, загрузилось ли это, необходимо проверить HasFile свойство, где верный означает, что это прибыло из файла.

25
задан Scotty 13 August 2009 в 13:10
поделиться

3 ответа

Проблема заключается в вашей первой анимации div # GroupDiv, поэтому ваша первоначальная проверка if (! $ ("# Div2 .tab"). Is (': animated')) будет ложным, пока groupDiv не завершит анимацию и не запустится обратный вызов.

Вы могли бы попробовать

if (!$("#div2 .tab").is(':animated') && !$("#GroupDiv").is(':animated')) 

, но я сомневаюсь, что это будет касаться действительно быстрого нажатия. Самый безопасный - отменить привязку события, используя

$ (this) .unbind ('toggle'). Unbind ('click');

в качестве первой строки внутри if, и затем вы можете отказаться от анимированной проверки . Обратной стороной этого является то, что вам придется выполнить повторную привязку, используя обратный вызов, который вы передаете своим пользовательским функциям анимации.

23
ответ дан 28 November 2019 в 20:58
поделиться

Вы можете легко отключить ваши ссылки во время анимации

$('a').click(function () {
    if ($(':animated').length) {
        return false;
    }
});

Вы, конечно, можете заменить селектор $ ('a') так, чтобы он соответствовал только некоторым ссылкам.

18
ответ дан 28 November 2019 в 20:58
поделиться

Анимация чего-то, на что можно нажимать несколько раз, - это то, на что следует обратить внимание, потому что это подвержено ошибкам. Я так понимаю, у вас проблема в том, что анимации выстраиваются в очередь и выполняются, даже если вы перестали нажимать. Я решил использовать функцию stop () для элемента.

Синтаксис: jQuery (selector) .stop (clearQueue, gotoEnd) // оба параметра являются логическими
Подробнее

Когда я нажимаю кнопку, я сначала останавливаю анимацию и очищаю очередь, а затем перехожу к определению новой анимации для нее. gotoEnd может оставаться false (значение по умолчанию), но вы можете попробовать изменить его на true, если хотите, результат может вам понравиться.

Пример использования: jQuery ('button # clickMe'). stop (true) .animate ({left : + = 10}).

3
ответ дан 28 November 2019 в 20:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: