javascript - 如何使用 Hammer.js 在 iOS 中禁用垂直滚动?

标签 javascript jquery safari multi-touch hammer.js

我试图在水平滚动列表中使用 Hammer.js(jQuery 版本)禁用 iOS 中的垂直滚动。我试过这个:

$(document).hammer().on('swipe,drag', 'body',
    function(event)
    {
        if (event.direction == Hammer.DIRECTION_UP || event.direction == Hammer.DIRECTION_DOWN) 
        {
            event.preventDefault();
        }
    }
);

但它不起作用。那么,如何在仍然能够水平滚动的同时禁用垂直滚动?

最佳答案

我是使用 event.gesture.preventDefault 做到的:

$('#horizontalCarousel').hammer({ drag_lock_to_axis: true }).on("swipe drag", function(event) {
        event.gesture.preventDefault();
        if(event.type == "swipe"){
            swipeAction(event);
        } else {
            dragAction(event);
        }
 });

这是给定的 documentation

[编辑]

我的回答只是让您知道您使用了错误的 event.preventDefault()。事实上,您还使用了错误的语法来检查事件方向。你应该能够以这种方式管理它,虽然我还没有测试过它:

$(document).hammer({ drag_lock_to_axis: true }).on("swipe drag", function(event) {
            if (event.gesture.direction == Hammer.DIRECTION_UP || event.gesture.direction == Hammer.DIRECTION_DOWN){
                 event.gesture.preventDefault();
            }
     });

改变了两件事:event.gesture.direction 和 event.gesture.preventDefault(); event.direction 是在旧版本的 hammer js 上执行此操作的方法。

注意:如果你想对滑动事件做一些事情,比如:滑动时水平跳跃更大的量,你可以结合我的答案。

关于javascript - 如何使用 Hammer.js 在 iOS 中禁用垂直滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15541152/

相关文章:

html - Safari 获取内联 block float 元素的 % 宽度错误

html - Safari 表格定位(负边距)

css - Safari 浏览器中的 div 页面全高

javascript - 不在站点根目录下时使用routeProvider

javascript - 在 HTML 中选择后保持范围对象的更改

javascript - CSS - 如何在容器内动态填充子项

c# - 如何将格式化字符串传递给 JavaScript 变量?请参阅 c# 示例我的意思

javascript - 使用 jQuery 跟踪来自浏览器的所有传出 URL 请求

javascript - 在 Visual Studio 代码中调试不起作用

函数循环期间的 Javascript 输出