仅防止水平滚动移动应用
我正在开发一个网络应用程序。 左侧是使用Sidr-plugin( jQuery插件:Sidr )的侧边栏。 测试站点在我的开发服务器上 。 我的问题是,如果我从左向右滑动,则会显示侧边栏。 这是非常好的。 但是,如果我想通过从右向左滑动来关闭侧边栏,我必须通过添加以下代码来阻止滚动:
$('body').bind('touchmove', function(e){e.preventDefault()})
我这样做了,但现在:我在页面顶部(菜单)的导航function不正常。 我不能滚动直到最后。
所以我的问题是:我怎样才能改变这一点。 如果我要关闭左侧的边栏,它应该只能阻止垂直滚动。
这是我完整的JavaScript:
$(function(){ $(document).foundation(); $('#sidebar-toggle').sidr(); var hammertime = Hammer(document.getElementById("wrapper")).on("swiperight", function(event) { $.sidr('open'); }); var hammertime = Hammer(document.getElementById("wrapper")).on("swipeleft", function(event) { $.sidr('close'); }); var hammertime = Hammer(document.getElementById("content")).on("tap", function(event) { $.sidr('close'); }); $('body').bind('touchmove', function(e){e.preventDefault()}) });
使页面不可滚动
像这样的东西?
我认为使用$(文档)会更好!
参考: 防止jQuery Mobile上的水平滚动
var lastY; $(document).bind('touchmove', function (e){ var currentY = e.touches[0].clientY; if (currentY !== lastY){ // moved vertically return; } lastY = currentY; //insert code if you want to execute something when an horizontal touchmove is made });
我试图将Sidr与Hammer JS集成,但是存在冲突,所以我摆脱了Hammer并使用了下面的代码,它使用了TouchWipe JS和Sidr JS。
我想你应该修复你从右向左滑动所面临的问题。