Предположим есть такой скрипт:
$(".event_next").click(function () {
$(".test").animate({'margin-left': newValue}, 3000);
}
он выполняет анимацию за 3 секунды, нужно сделать так, чтобы скрипт повторно не активировался при повторном нажатие на кнопку, пока не завершится текущее выполнение скрипта. А то пользователь может спамить кнопку.
В моём случае, у меня есть карусель которая листает изображения, и при частом нажатие всё работает не правильно.
Первое что пришло на ум-- создать флаг, и после выполнения анимации менять его например :
var startAnimation = true;
$(".event_next").click(function() {
if (startAnimation) {
startAnimation = false;
$(".test").animate({ 'margin-left': newValue }, 3000, function() {
startAnimation = true;
});
}
}
Можно блокировать кнопку на время выполнения анимации:
$(".event_next").click(function () {
$(this).attr('disabled', true);
$(".test").animate({'margin-left': '150px'}, 3000);
setTimeout(function(){$(".event_next").attr('disabled', false);}, 3000);
});
.test {
width: 200px;
height: 100px;
border: 1px solid black;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="event_next">Нажми меня</button>
<div class="test">
</div>
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Подскажите пожалусто как можно реализовать переобразование из одно мерного обекта в многомерный
ширина td должна быть равна ширине(высота)InputКак это реализовать? Это что то похожее на электронный журнал
На данный вопрос уже ответили: