В этой статейке, я покажу как можно быстро и просто заблокировать действия до завершения анимации, вызванной с помощью jQuery aminate()
Очень часто бывает жизненно необходимо дождаться завершения анимации, случаи бывают разные — каруселька, галерея и многое другое.
Раньше я изобретал «велосипед» — добавлял всевозможные таймеры, блокировал страницу, и тд. Но сегодня полистав документацию jQuery, я наткнулся на интересную возможность функции animate(). Оказывается, помимо параметров анимации и скорости, эта функция может вызывать действия по завершению анимации.
Используя новые знания, я быстро набросал пример, который показывает, как можно заблокировать повторное выполнение анимации, пока не закончится старая.
Ниже приведен подробно прокомментированный код:
$(document).ready(function(){
// создаем действия при клике на кнопку
var animateTest = function() {
var widthElement = parseInt($(this).width());
var heightElement = parseInt($(this).height());
var stepZoom = 50;
var speedAnimate = 1000;
// перед запуском анимации снимаем все действия с кнопки
// чтобы пользователь не мог сделать повторные клики
$(this).unbind('click');
// запуск анимации
$(this).animate(
// анимация
{
width: (widthElement + stepZoom) + 'px',
height: (heightElement + stepZoom) + 'px'
},
// скорость анимации
speedAnimate,
// действие по завершению анимации
(function(){
// как анимация завершиться "разблокируем кнопку"
// навесим на нее опять действие
$('#test_button').bind('click', animateTest);
})
);
}
// задаем действия для кнопки
$('#test_button').bind('click', animateTest);
});
И еще для теста добавим на страницу одну строчку html:
<input type="button" value="Click me" id="test_button" />

Ты, просто — Батя, спасибо помогло
Спасибо! Отличный и очень полезный код!