Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.08.2011, 01:53
Новичок на форуме
Отправить личное сообщение для spider84 Посмотреть профиль Найти все сообщения от spider84
 
Регистрация: 21.07.2010
Сообщений: 4

Выполнение события с последующей задержкой
Здраствуйте!

Допустим у меня есть какойто элемент (кнопка, ссылка, изображение) с привязаным к нему событием функцией срабатывающией по щелчку мыши или нажатием клавиши на клавитуре.

Мне нужно чтобы после срабатывания события оно отключалось на некоторое время(например на 3 секунды), для избежания повторного срабатывания.
Как это реализовать? Правильно ли понимаю что нужно копать в сторону таймеров?


Заранее спасибо за помощь!
Ответить с цитированием
  #2 (permalink)  
Старый 09.08.2011, 02:26
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

для избежания повторного срабатывания таймеры тебе не помогут, используй флаги.
например:
$("#my_div").click(function(){
  if ( !$( this ).attr( 'busy' ) ) {
    $( this ).attr( 'busy', true );
    // ....... обрабатываем много кода.
    $( this ).removeAttr( 'busy' );
  }
});

Последний раз редактировалось devote, 09.08.2011 в 02:35.
Ответить с цитированием
  #3 (permalink)  
Старый 09.08.2011, 02:57
Новичок на форуме
Отправить личное сообщение для spider84 Посмотреть профиль Найти все сообщения от spider84
 
Регистрация: 21.07.2010
Сообщений: 4

Спасибо devote!
А как задержать поввторное срабатывание на определенное время?
Ответить с цитированием
  #4 (permalink)  
Старый 09.08.2011, 03:55
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от spider84
А как задержать поввторное срабатывание на определенное время?
Освободи элемент от события а когда надо вновь привяжи.
А можно и так:
$("#my_div").click(function(){
  if ( !$( this ).attr( 'busy' ) ) {
    $( this ).attr( 'busy', true );
    // ....... обрабатываем много кода.
    setTimeout(function(){
       $( "#my_div" ).removeAttr( 'busy' );
    }, 3000); // Задержка на три секунды
  }
});

Последний раз редактировалось devote, 09.08.2011 в 06:10.
Ответить с цитированием
  #5 (permalink)  
Старый 09.08.2011, 08:41
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

лучше ставить числа - их проверять проще

$("#my_div").click(function(){
  if ( !$( this ).attr( 'busy' ) ) {
    $( this ).attr( 'busy', *!*'1'*/!* );
    // ....... обрабатываем много кода.
    setTimeout(function(){
       $( "#my_div" ).removeAttr( 'busy' );
    }, 3000); // Задержка на три секунды
  }
});


а то получится строка "true" в атрибуте .. или "false", а они , как известно , Boolean("false") === true
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка события элемента внутри создавшего его объекта pauluss Общие вопросы Javascript 10 10.09.2010 16:01
Прерывание события на границе двух блоков miller Events/DOM/Window 0 25.06.2010 19:58
как узнать имеется ли обработчик события HelpeR Events/DOM/Window 9 17.02.2010 17:20
Drug&Drop + всплывание события = проблемы =(( _NoName_ Events/DOM/Window 4 05.03.2009 16:47
Явный вызов процедуры обработки события. supchik Общие вопросы Javascript 18 27.01.2009 12:16