1

我正在构建一个响应式站点,主导航显示hover. click在触摸屏上(touchstart更具体地说)它会这样做。

在桌面上,当用户不再将鼠标悬停在导航或子导航上时,它就会消失。为了在触摸屏上实现同样的功能,我将一个函数绑定touchstartbody. 此函数检查触摸是否发生在nav. 如果没有,它会关闭一个打开的子导航。

问题是我只希望在用户点击外部时发生这种情况nav而不是在他们滚动时发生。如何检查用户是否滚动而不是仅仅点击?

到目前为止的功能是这样的:

$('body').bind('touchstart', function(e) {
    if($(e.target).closest('nav').length == 0) {
        closeAll();
    }
});
4

1 回答 1

3

我会检测他们在touchstart上触摸的位置(坐标),并设置一个时间在几毫秒后检查......如果触摸点移动了几个像素以上,他们正在滚动。

编辑:我在为触摸屏界面编码时遇到的另一件事是,某些设备在使用 click() 时具有约 300 毫秒的内置延迟。如果您还没有,您可以覆盖它。

于 2012-09-21T09:52:00.347 回答