запретить выполнение клика JavaScript, если оно не готово

0
previous.click(function(){
  if ((parseInt($('.slider-box').css('margin-left'))) < 0) {
    $('.slider-box').animate({'margin-left':'+='+rubrikWidth});
  }
}); 

Этот код выполняет слайдер для перемещения вправо, если кнопка нажата, а левая сторона поля - <0. Но когда вы нажимаете быстро и часто, if-предложение рассчитывает на замедление, а затем можно перемещать ползунок вдаль, Я хочу, чтобы кнопка была нажата слишком быстро. есть способ сделать: click → execute event → и после этого выполнения вы можете нажать еще раз.

Теги:
click

2 ответа

1
Лучший ответ

Вы можете просто использовать animate обратный вызов. Это должно сделать это, если .slider-box только одному элементу:

previous.click(function(){
  var slider = $('.slider-box');
  if (!slider.data('busy') && (parseInt(slider.css('margin-left'))) < 0) {
    slider.data('busy', true).animate({'margin-left':'+='+rubrikWidth}, function() {
        slider.data('busy', false);
    });
  }
});
  • 0
    это прекрасно работает для меня! Спасибо
0

вы можете проверить, работает ли анимация, проверяя:

$('.slider-box').queue('fx').length

и используйте preventDefault если длина очереди больше нуля

Ещё вопросы

Сообщество Overcoder
Наверх
Меню