如何在没有大型库的情况下获得触摸事件

时间:2013-04-04 14:41:50

标签: javascript jquery

我正在使用jquery,但我不想使用jquery mobile,因为它太大了,我觉得我不需要它。我所要做的就是获得触摸事件。这就是我所拥有的。

 $('#menuButton').on('click touchstart', function(){
  $('#menu').toggleClass('block')
 });

它只是有点工作,但似乎在我的手机上发射了两次。我想我应该以某种方式检查touchstart和touchend。这需要适用于所有类型的设备,希望如此。谢谢!

1 个答案:

答案 0 :(得分:1)

看哪!触摸的生命周期:

  1. 你的手指击中玻璃 - > touchstart!
  2. 你的手指离开了玻璃 - > touchend!
  3. 你的手指徘徊 - >点击!
  4. 现在点击鼠标的生命周期:

    1. 你的手指按下按钮 - >的mousedown!
    2. 你的手指从按钮上移除压力 - >鼠标松开!
    3. 你的手指徘徊 - >点击!
    4. 如果您正在侦听touchstart和click,则事件将在鼠标或触控板计算机上触发一次,在触摸设备上触发两次,因为您在生命周期中正在侦听2个事件。

      如果您真的想使用点击桌面和touch触摸设备(在许多情况下是一个好主意),您可以这样做:

       var clickEvent = (isMobile)?'touchstart':'click';
       $('#menuButton').on(clickEvent, function(){
         $('#menu').toggleClass('block')
       });
      

      如何找到isMobile是另一回事。


      更新:如果你感兴趣的是npm isMobile

      ,我已经编写了一个方便的脚本来检测手机