2012-02-21 3 views
2

В приведенном ниже коде добавлена ​​сенсорная навигация для android/ipads и т. Д. Он добавляет навигацию на слайд-эскизы. Это отлично работает и все, но эскизы не касаются планшета прикосновением. Вы можете щелкнуть их на компьютере и ползунок изменится на соответствующий слайд ... не на планшете, его, как будто прикосновение или «щелчок» не делает ничего (пролистывание работает отлично)jquery touch navigation

JS Fiddle

http://jsfiddle.net/Mottie/VM8XG/5165/

JS

$('#slider').anythingSlider({ 

navigationSize : 3, 

// Callback when the plugin finished initializing 
onInitialized: function(e, slider) { 

    var time = 1000, // allow movement if < 1000 ms (1 sec) 
     range = 50, // swipe movement of 50 pixels triggers the slider 
     x = 0, t = 0, touch = "ontouchend" in document, 
     st = (touch) ? 'touchstart' : 'mousedown', 
     mv = (touch) ? 'touchmove' : 'mousemove', 
     en = (touch) ? 'touchend' : 'mouseup'; 

    slider.$window.add(slider.$controls) 
     .bind(st, function(e){ 
      // prevent image drag (Firefox) 
      e.preventDefault(); 
      t = (new Date()).getTime(); 
      x = e.originalEvent.touches ? e.originalEvent.touches[0].pageX : e.pageX; 
     }) 
     .bind(en, function(e){ 
      t = 0; x = 0; 
     }) 
     .bind(mv, function(e){ 
      e.preventDefault(); 
      var newx = e.originalEvent.touches ? e.originalEvent.touches[0].pageX : e.pageX, 
      r = (x === 0) ? 0 : Math.abs(newx - x), 
      // allow if movement < 1 sec 
      ct = (new Date()).getTime(); 
      if (t !== 0 && ct - t < time && r > range) { 
       if (newx < x) { 
        if ($(this).hasClass('anythingControls')) { 
         slider.$controls.find('.next').trigger('click'); 
        } else { 
         slider.goForward(); 
        } 
        return false; 
       } 
       if (newx > x) { 
        if ($(this).hasClass('anythingControls')) { 
         slider.$controls.find('.prev').trigger('click'); 
        } else { 
         slider.goBack(); 
        } 
       } 
       t = 0; x = 0; 
       return false; 
      } 
     }); 
} 

});​ 

ответ

0

Я думаю, что это из-за события парения - если вы нажмете на закладках номер дважды быстро (может потребоваться несколько уколов, чтобы поймать его!) на IPad он успешно ориентироваться на образ.

Невозможно говорить для андроида, но я заметил, что iPad накладывает эффекты на первый клик, поэтому стоит просто просмотреть сценарий для слайдера изображения, узнав, к каким событиям мыши он подключается (mouseover, hover и т. д.) и отвязать их в конце вашего сеанса, где обнаружен планшет.

0

Метод event.preventDefault() останавливает действие элемента по умолчанию.

Но вы только что удалили два действия:

e.preventDefault();