Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.03.2012, 17:35
Интересующийся
Отправить личное сообщение для battrack Посмотреть профиль Найти все сообщения от battrack
 
Регистрация: 03.03.2009
Сообщений: 13

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

Как быть? Можно ли из многочисленных кликов по кнопке обрабатывать только первый клик? А остальные клики не выстраивать в очередь. Как только завершится код внтри обработчика клика, то по кнопке снова можно кликать???
Ответить с цитированием
  #2 (permalink)  
Старый 21.03.2012, 17:45
Кандидат Javascript-наук
Отправить личное сообщение для Nightmare Посмотреть профиль Найти все сообщения от Nightmare
 
Регистрация: 16.04.2010
Сообщений: 133

rtfm
Ответить с цитированием
  #3 (permalink)  
Старый 21.03.2012, 17:46
Аспирант
Отправить личное сообщение для atlantis Посмотреть профиль Найти все сообщения от atlantis
 
Регистрация: 18.03.2012
Сообщений: 95

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

Последний раз редактировалось atlantis, 21.03.2012 в 17:49.
Ответить с цитированием
  #4 (permalink)  
Старый 22.03.2012, 10:47
Интересующийся
Отправить личное сообщение для battrack Посмотреть профиль Найти все сообщения от battrack
 
Регистрация: 03.03.2009
Сообщений: 13

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по jquery. Как запретить один из скриптов при клике vuler Общие вопросы Javascript 1 07.03.2012 22:35
Как подменять ФАЙЛ CSS при клике нассылку!!!! СРОЧНО ПОМОГИТЕ. pavdin Общие вопросы Javascript 4 02.12.2010 20:44
Как сделать, чтобы музыка <embed> на странице не играла только при первом посещении? Bad Request Общие вопросы Javascript 22 27.07.2009 19:44
Как отменить прокрутку при клике Alekson jQuery 1 30.03.2009 20:53
Dojo может подгружать информацию из пунктов меню только при клике на выбранный пункт? vlad275 Dojo toolkit 0 30.10.2008 15:56