2014-10-06 5 views
0

У меня есть этот код:Почему событие события подавляется событием touchstart?

$('.selector').on({ 
     touchstart: function (e) { 
      e.preventDefault(); 
      alert(3); 
      e.stopPropagation(); 
     }, 
     tap: function (e) { 
      e.preventDefault(); 
      alert(4); 
      e.stopPropagation(); 
     } 
     }); 

Только touchstart срабатывает. Может ли кто-нибудь объяснить, почему?

P.S. : Это, как я включить сценарий для JQuery мобильного: <script src="http://code.jquery.com/mobile/1.4.4/jquery.mobile-1.4.4.min.js"></script>

EDIT: Я хочу представить функциональность парения на одном из моих DIV, и я подумал, что с событием крана будет как щелкая и touchstart как парение ,

$('.selector').on('tap swipe', function (e) { 
     e.preventDefault(); 
     if(e.type == 'swipe') { 
      alert(1); 
     } 
     if(e.type == 'tap') { 
      alert(2); 
     } 
     e.stopPropagation(); 
     }); 

     $('.selector .sel1').on('tap swipe', function (e) { 
     e.preventDefault(); 
     if(e.type == 'swipe') { 
      alert(3); 
     } 
     if(e.type == 'tap') { 
      alert(4); 
     } 
     e.stopPropagation(); 
     }); 

С помощью этого кода события коромысла на моем DIV отлично работает, но внутри элемент я не могу воспроизвести это событие салфетки, только кран сработал. Я действительно не могу понять, почему.

ответ

0

Используйте синтаксис, как это:

$('.selector').on("touchstart tap", function(e){ 
    e.preventDefault(); 
    if(e.type == "touchstart"){ 

     alert(3); 

    } 
    if(e.type == "tap"){ 

     alert(4); 

    } 
    e.stopPropagation(); 
}); 
+0

Даже если я коснусь своего div, первое запущенное событие - это touchstart, поэтому будет показано только предупреждение 3. Я хочу отделить поведение touchstart и коснуться. –

0

Touchstart кажется больше не будет предлагаться в качестве родного события в JQuery Mobile вер. 1.4.5 Возможно, вы можете использовать «tap» и «swipe» (или «swipeleft»/«swiperight») для достижения ваших целей? Его не совсем ясно, что вы создаете.

Примечание: одно, что вы можете сделать, это легко настроить собственные функции jQuery Mobile для прокрутки. См. Подробности на http://api.jquerymobile.com/swipe/

Прежде чем вы выполните привязку .on ("swipe" ...), вы можете изменить тестовые значения, используемые jQuery swipe. Его так же просто, как

$.event.special.swipe.horizontalDistanceThreshold = 100; // in lieu of 30px 

Вы можете проверить настройку данных с помощью оповещений или console.log(). Возможно, это сработает для вас? hmmm .., работая над порогом вертикального расстояния, вы могли бы по существу временно определить «салфетки», чтобы функционировать как «прокрутка», тогда у вас были бы swipeleft, swiperight и swipeup для игры.