我在移动设备上有一个可滚动的列表。他们希望人们能够通过滑动来滚动列表,也可以通过点击来选择一行。

渔获物将两者结合在一起。如果您实际上正在滚动列表,则我不希望选择一行。这是我发现的:

滚动时不触发:

  • 单击
  • mouseup

  • 滚动时触发:
  • 鼠标按下
  • touchstart
  • touchend

  • 简单的解决方案是仅坚持单击事件。但是我们发现,在某些黑莓设备上,touchstart和触摸触发之间会出现非常明显的滞后,然后触发单击或鼠标按下。此延迟严重到足以使其在那些设备上不可用。

    因此,我们还有其他选择。但是,使用这些选项,您可以滚动列表,而无需触发触摸即可开始滚动的行。

    解决此问题的最佳实践是什么?

    最佳答案

    var touchmoved;
    $('button').on('touchend', function(e){
        if(touchmoved != true){
            // button click action
        }
    }).on('touchmove', function(e){
        touchmoved = true;
    }).on('touchstart', function(){
        touchmoved = false;
    });
    

    09-16 10:28