Событие Mousehold в JQuery

В принципе, у меня есть это изображение с помощью кнопки со стрелкой влево и вправо. Это изображение, по умолчанию, является первым кадром, который я извлек из некоторого gif, исходный gif содержит 31 кадр. Моя цель – когда пользователи нажимают кнопку со стрелкой вправо, я хочу отобразить следующий кадр и т. Д. Все работает отлично, как показано ниже. Тем не менее, мне нужно добавить какое-то событие мыши, чтобы, когда пользователь нажимает и удерживает мышь, я хочу продолжать стрелять по следующим изображениям. Как я могу это достичь?

$('#arrow_right').click(function (event) { event.preventDefault(); var data_id = parseInt($(this).parent().find('#inner_wrap img').attr('data-id')); if (data_id >= 1 && data_id <= 30) { data_id = data_id + 1; var avatar_num = $('#inner_wrap').html('<img id="avatar" data-id="' + data_id + '" src="img/avatar_test' + data_id + '.gif" width="90" height="200">'); } }); 

Хорошо, вы можете использовать событие mousedown для запуска функции, которая отображает gif-frame: http://api.jquery.com/mousedown/, а затем добавляет еще один обработчик событий для события mouseup , который остановит эту функцию. Эта функция может вызываться через setInterval() в mousedown -event, например, и останавливаться с помощью clearInterval() в событии mouseup .

Это пример, который показывает принцип:

 var interval; $(button).addEventListener('mousedown',function(e) { interval = setInterval(function() { // here goes your code that displays your image/replaces the one that is already there },500); // 500ms between each frame }); $(button).addEventListener('mouseup',function(e) { clearInterval(interval); }); // Thank you, Timo002, for your contribution! // This code will stop the interval if you move your mouse away from the button while still holding it. $(button).addEventListener('mouseout',function(e) { clearInterval(interval); }); 

Помимо ответа Zim84, я должен добавить этот кусок кода!

 $(button).addEventListener('mouseout',function(e) { clearInterval(interval); }); 

Это будет зависеть от того, что если кто-то нажал кнопку ( mousedown ) и удерживает курсор мыши и уходит ( mouseout ) кнопку, интервал также очищается. Без этого интервал не останавливается в этой конкретной ситуации.

  • JQuery / Javascript находят первый видимый элемент после прокрутки
  • Автозаполнение требует, чтобы вы дважды щелкнули iOS после обновления до 1.11.0
  • Каков наилучший способ рендеринга PartialView на страницу макета в MVC?
  • Передача данных в диалоговое окно JQuery UI
  • JQuery - удалить дубликаты из массива строк
  • Как отлаживать привязки событий JavaScript / jQuery с помощью Firebug (или аналогичного инструмента)
  • Проверьте, содержат ли поля ввода определенные тексты
  • Изменение размера нимомодального окна
  • Являются $ (функция () {}); И $ ("document"). Ready (function () {}); тоже самое?
  • Получить первую и последнюю дату текущего месяца с помощью JavaScript или jQuery
  • Система шаблонов JS с Backbone.js
  • Давайте будем гением компьютера.