Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.09.2010, 11:36
Интересующийся
Отправить личное сообщение для grefon Посмотреть профиль Найти все сообщения от grefon
 
Регистрация: 17.03.2009
Сообщений: 12

Баг при многократном нажатии
Подскажите, пожалуйста, есть ли решение такой проблемы: есть набор действий, который срабатывает при клике по блоку:

$('#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});


Но к сожалению не помогает. Как правильно заблокировать многократное нажатие?
Ответить с цитированием
  #2 (permalink)  
Старый 06.09.2010, 11:56
Новичок
Отправить личное сообщение для inGray Посмотреть профиль Найти все сообщения от inGray
 
Регистрация: 03.08.2010
Сообщений: 230

Не знаю насколько правильное решение, но можно сделать глобальную булеву переменную clicked и проверять её при клике. Если тру, то ничего не делать.
__________________
Не хочешь, чтобы тебя послали? Не спрашивай куда идти.
Ответить с цитированием
  #3 (permalink)  
Старый 06.09.2010, 11:58
Интересующийся
Отправить личное сообщение для grefon Посмотреть профиль Найти все сообщения от grefon
 
Регистрация: 17.03.2009
Сообщений: 12

Уже пробовал. Все равно при быстром "клацанье" бывает, что проскакивает лишние нажатие и функция повторяется.
Ответить с цитированием
  #4 (permalink)  
Старый 06.09.2010, 12:51
Новичок
Отправить личное сообщение для inGray Посмотреть профиль Найти все сообщения от inGray
 
Регистрация: 03.08.2010
Сообщений: 230

Проверка должна быть первым пунктом в процедуре. т.е.
if (!clicked){
clicked = true;
...
здесь код
...
}
__________________
Не хочешь, чтобы тебя послали? Не спрашивай куда идти.
Ответить с цитированием
  #5 (permalink)  
Старый 06.09.2010, 13:16
Интересующийся
Отправить личное сообщение для grefon Посмотреть профиль Найти все сообщения от grefon
 
Регистрация: 17.03.2009
Сообщений: 12

Ура! Получилось! Только перед самим кодом нужно поставить clicked = false; иначе глючит.
inGray, СПАСИБО!
Ответить с цитированием
  #6 (permalink)  
Старый 06.09.2010, 13:20
Новичок
Отправить личное сообщение для inGray Посмотреть профиль Найти все сообщения от inGray
 
Регистрация: 03.08.2010
Сообщений: 230

Само собой. Незачто
__________________
Не хочешь, чтобы тебя послали? Не спрашивай куда идти.
Ответить с цитированием
  #7 (permalink)  
Старый 06.09.2010, 14:12
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

http://api.jquery.com/one/
Ответить с цитированием
  #8 (permalink)  
Старый 06.09.2010, 14:20
Новичок
Отправить личное сообщение для inGray Посмотреть профиль Найти все сообщения от inGray
 
Регистрация: 03.08.2010
Сообщений: 230

one для однократного действия... Если захочется снова нажать, придется заново обработчик вешать....
__________________
Не хочешь, чтобы тебя послали? Не спрашивай куда идти.
Ответить с цитированием
  #9 (permalink)  
Старый 06.09.2010, 14:24
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

inGray,
видимо, не так понял

тогда можно
if ($("#block1:animated, #block2:animated").size()) return;
(если анимация идет, игнорировать)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как поменять картинку при нажатии на нее syegorius Events/DOM/Window 1 28.08.2010 23:14
Событие onClick при нажатии пункта меню Lex4e Общие вопросы Javascript 1 25.06.2010 18:31
При нажатии и удержании мыши заменяется картинка Webroller Events/DOM/Window 9 26.05.2010 16:00
Как сделать так, чтобы JS при нажатии на кнопку не выполняла запрос со страницы. JSProgrammer Элементы интерфейса 3 18.05.2010 20:18
Открыть в новом окне, а при повторном нажатии обновить то же старое-новое окно libinstyle Events/DOM/Window 2 05.04.2010 20:13