Баг при многократном нажатии
Подскажите, пожалуйста, есть ли решение такой проблемы: есть набор действий, который срабатывает при клике по блоку:
$('#kliki').click(function(){ $('#kliki').css({display:'none'}); $('#block1').animate({left: '500px'}, function() { $('#block2').fadeOut(200); }); }); При клике по блоку kliki я его скрываю и делаю анимацию для 2 блоков: block1 и block2. Проблемма заключается в том, что если сделать много кликов подряд по блоку kliki то функция начинает повторяться, столько раз, сколько человек успел кликнуть пока блок kliki не скрылся. Как это обойти? Пробывал что-то типа такого: $('#kliki').click(function(){ },{queue : false}); Но к сожалению не помогает. Как правильно заблокировать многократное нажатие? |
Не знаю насколько правильное решение, но можно сделать глобальную булеву переменную clicked и проверять её при клике. Если тру, то ничего не делать.:-?
|
Уже пробовал. Все равно при быстром "клацанье" бывает, что проскакивает лишние нажатие и функция повторяется.
|
Проверка должна быть первым пунктом в процедуре. т.е.
if (!clicked){ clicked = true; ... здесь код ... } |
Ура! Получилось! Только перед самим кодом нужно поставить clicked = false; иначе глючит.
inGray, СПАСИБО! |
Само собой. Незачто ;)
|
|
one для однократного действия... Если захочется снова нажать, придется заново обработчик вешать....
|
inGray,
видимо, не так понял :) тогда можно if ($("#block1:animated, #block2:animated").size()) return;(если анимация идет, игнорировать) |
Часовой пояс GMT +3, время: 23:15. |