【问题标题】:Touchstart firing twice on mobileTouchstart 在移动设备上触发两次
【发布时间】:2016-11-27 03:27:32
【问题描述】:

我在使用移动菜单时遇到了一些问题。起初我的代码是这样写的,在桌面上运行良好

$('#nav-icon3').click(function(){
    $(this).toggleClass('open');
});

$('.menu-item').click(function(){
  $('#nav-icon3').toggleClass('open');
});

通过 android chrome 在我的移动设备上上传和检查后,点击功能不起作用,所以我尝试使用 touchstart。

$('#nav-icon3').on('touchstart', function(){
    $(this).toggleClass('open');
});

$('.menu-item').on('click touchstart', function(){
  $('#nav-icon3').toggleClass('open');
});

当触摸菜单项元素时,切换触发两次。无论如何我可以防止这种情况发生并让它只触发一次?

【问题讨论】:

    标签: android jquery mobile


    【解决方案1】:

    我认为根据您的问题正在发生的事情是您的事件正在传播。您可以做的是通过执行此类操作来阻止事件传播。

    $('.menu-item').on('click touchstart', function(e) {
        e.stopPropagation();
        $('#nav-icon3').toggleClass('open');
    });
    

    更多参考:

    https://api.jquery.com/event.stoppropagation/

    【讨论】:

      【解决方案2】:

      当我遇到和你一样的问题时,使用 e.preventDefault(); 对我有用。

      $('#nav-icon3').on('touchstart', function(e){
          e.preventDefault();
          $(this).toggleClass('open');
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-13
        • 1970-01-01
        相关资源
        最近更新 更多