我试图在iOS中使用Hammer.js(jQuery版本)在水平滚动列表中禁用垂直滚动.我试过这个:
$(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是在旧版本的锤子js上执行它的方法.
注意:如果您想对滑动事件执行某些操作,例如:在滑动时水平跳跃更大的数量,您可以合并我的答案.