Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как при быстром многократном клике по кнопке обрабатывать только первый клик (https://javascript.ru/forum/jquery/26768-kak-pri-bystrom-mnogokratnom-klike-po-knopke-obrabatyvat-tolko-pervyjj-klik.html)

battrack 21.03.2012 17:35

Как при быстром многократном клике по кнопке обрабатывать только первый клик
 
Есть такая задача:
Элемент (например div) должен двигаться влево по клику по кнопке.
Кликнули по кнопке, скрипт изменил свойство элемента left на определенный шаг. Все ок.
Необходимо чтобы после клика по кнопке, пока объект не перестанет двигаться, кнопка не реагировала бы на другой клик по ней. Т.е. грубо говоря, пока обрабатывается первый клик (происходит какая-то анимация и т.п.), на еще один клик кнопка не должна реагировать. Как анимация завершится, кнопка снова может обрабатывать клик. Не знаю как это сделать.
Если несколько раз кликнуть по кнопке быстро, то все обработчики становятся в очередь и обрабатываются. В итоге если быстро кликнули по кнопке три раза, то элемент переместится на 3 шага. А мне жизненно важно чтобы элемент перемещался на один шаг. Как только шаг завершится, кнопка доступна для еще одного клика и т.д.
Вариант со скрытием кнопки, пока идет анимация, не подходит.

Как быть? Можно ли из многочисленных кликов по кнопке обрабатывать только первый клик? А остальные клики не выстраивать в очередь. Как только завершится код внтри обработчика клика, то по кнопке снова можно кликать???

Nightmare 21.03.2012 17:45

rtfm

atlantis 21.03.2012 17:46

объяви переменную вне функции со значением "0".
После нажатия на кнопку (перед запуском анимации) меняй значение переменной на "1", и в самом начале функции проверяй это значение, т.е. если == 0, то запускай анимацию, иначе ничего не делай.
А после завершения анимации, меняй значение переменной на "0".
----------------
Nightmare,
То же нужно! :)

battrack 22.03.2012 10:47

atlantis, огромное спасибо!
Сработало!


Часовой пояс GMT +3, время: 19:18.