2015-04-30 1 views
0

У меня есть следующие функции, которая прекрасно работает на одном прессе:JQuery мобильный сенсорный - повторить событие при удерживании/удерживающим

$('.ele').on('taphold', function() { 
    var data_max = $(this).closest('.value').attr('data-max'); 
    var current = $(this).closest('.value').find('input'); 

    var newVal = parseInt(current.val()) + 1; 

    if (newVal <= data_max) { 
     current.val(newVal); 
    } 
}); 

Однако то, что я хотел бы сделать, повторно запустить это для до тех пор, пока пользователь сохраняет нажатие.

Я нашел несколько библиотек, которые используют onmousedown и до хорошего эффекта с помощью мыши, но это не работает с прикосновением.

Любые рекомендации?

Большое спасибо

ответ

0

Это сработало для меня красиво, как и ожидалось. Оригинальный сценарий здесь http://download.remysharp.com/mousehold.js

Моя измененная версия, меняющая привязки к мобильным jquery.

jQuery.fn.mousehold = function(timeout, f) { 
if (timeout && typeof timeout == 'function') { 
    f = timeout; 
    timeout = 100; 
} 
if (f && typeof f == 'function') { 
    var timer = 0; 
    var fireStep = 0; 
    return this.each(function() { 
     jQuery(this).on("vmousedown", function() { 
      fireStep = 1; 
      var ctr = 0; 
      var t = this; 
      timer = setInterval(function() { 
       ctr++; 
       f.call(t, ctr); 
       fireStep = 2; 
      }, timeout); 
     }) 

     clearMousehold = function() { 
      clearInterval(timer); 
      if (fireStep == 1) f.call(this, 1); 
      fireStep = 0; 
     } 

     jQuery(this).on("vmouseout", clearMousehold); 
     jQuery(this).on("vmouseup", clearMousehold); 
    }) 
} 

}

Смежные вопросы