Выполнение события с последующей задержкой
Здраствуйте!
Допустим у меня есть какойто элемент (кнопка, ссылка, изображение) с привязаным к нему событием функцией срабатывающией по щелчку мыши или нажатием клавиши на клавитуре. Мне нужно чтобы после срабатывания события оно отключалось на некоторое время(например на 3 секунды), для избежания повторного срабатывания. Как это реализовать? Правильно ли понимаю что нужно копать в сторону таймеров? Заранее спасибо за помощь! |
для избежания повторного срабатывания таймеры тебе не помогут, используй флаги.
например: $("#my_div").click(function(){ if ( !$( this ).attr( 'busy' ) ) { $( this ).attr( 'busy', true ); // ....... обрабатываем много кода. $( this ).removeAttr( 'busy' ); } }); |
Спасибо devote!
А как задержать поввторное срабатывание на определенное время? |
Цитата:
А можно и так: $("#my_div").click(function(){ if ( !$( this ).attr( 'busy' ) ) { $( this ).attr( 'busy', true ); // ....... обрабатываем много кода. setTimeout(function(){ $( "#my_div" ).removeAttr( 'busy' ); }, 3000); // Задержка на три секунды } }); |
лучше ставить числа - их проверять проще
$("#my_div").click(function(){ if ( !$( this ).attr( 'busy' ) ) { $( this ).attr( 'busy', *!*'1'*/!* ); // ....... обрабатываем много кода. setTimeout(function(){ $( "#my_div" ).removeAttr( 'busy' ); }, 3000); // Задержка на три секунды } }); а то получится строка "true" в атрибуте .. или "false", а они , как известно , Boolean("false") === true |
Часовой пояс GMT +3, время: 11:45. |