Jquery mobile 为什么touchstart事件会抑制点击事件?

Jquery mobile 为什么touchstart事件会抑制点击事件?,jquery-mobile,mobile,touchstart,Jquery Mobile,Mobile,Touchstart,我有以下代码: $('.selector').on({ touchstart: function (e) { e.preventDefault(); alert(3); e.stopPropagation(); }, tap: function (e) { e.preventDefault(); alert(4); e.stopP

我有以下代码:

$('.selector').on({
        touchstart: function (e) {
          e.preventDefault();
          alert(3);
          e.stopPropagation();
        },
        tap: function (e) {
          e.preventDefault();
          alert(4);
          e.stopPropagation();
        }
      });
仅触发touchstart。有人能解释为什么吗

备注:这就是我为jQuery mobile编写脚本的方式:

编辑: 我想在我的一个div上引入一个悬停功能,我认为使用tap事件就像单击一样,使用类似于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上的滑动事件可以正常工作,但是对于inside元素,我无法重现滑动事件,只有点击被触发。我真的不明白为什么。

使用如下语法:

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

      alert(3);

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

      alert(4);

   }
   e.stopPropagation();
});

Touchstart似乎不再作为jQuery Mobile版本中的本机事件提供。1.4.5您是否可以使用“轻按”和“轻扫”(或“轻扫”/“轻扫”)来实现您的目标?它并不完全清楚你在创造什么

注意:您可以做的一件事是轻松定制本地jQuery移动函数以进行滑动。详情请参阅

在进行.on(“swipe”…)绑定之前,可以更改jQuery swipe使用的测试值。这很容易

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

您可以通过警报或console.log()验证数据设置是否正确。也许这对你有用?六羟甲基三聚氰胺六甲醚。。通过使用垂直距离阈值,您可以在本质上暂时将“滑动”定义为“向上滑动”,然后您可以使用swipeleft、swiperight和swipeup

即使我点击我的div,触发的第一个事件是touchstart,因此只会显示警报3。我想分离touchstart和tap的行为。