1

我正在开发一个网络应用程序。左侧是使用 Sidr 插件(jQuery 插件:Sidr)的侧边栏。测试站点在我的开发服务器上。我的问题是,如果我从左向右滑动,则会显示侧边栏。这是非常好的。但是,如果我想通过从右向左滑动来关闭侧边栏,我必须通过添加以下代码来防止滚动:

$('body').bind('touchmove', function(e){e.preventDefault()})

我这样做了,但是现在:我在页面顶部(菜单)的导航无法正常工作。我不能滚动到最后。

所以我的问题是:我该如何改变这一点。如果我要关闭左侧的侧边栏,它应该只防止垂直滚动。

这是我完整的 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()})
});
4

2 回答 2

0

使页面不可滚动

像这样的东西?

我认为使用 $(document) 会更好!

参考:防止 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
});
于 2013-05-12T18:25:54.967 回答
0

我试图将 Sidr 与 Hammer JS 集成,但存在冲突,所以我摆脱了 Hammer 并使用下面的代码,它使用了 TouchWipe JS 和 Sidr JS。

<!-- Swipe to open or close mobile menu -->

<script>

      jQuery(window).touchwipe({
        wipeLeft: function() {
          // Close
          jQuery.sidr('close', 'sidr-main');
        },
        wipeRight: function() {
          // Open
          jQuery.sidr('open', 'sidr-main');
        },
        preventDefaultEvents: false
      });

</script>

我想您应该解决从右向左滑动所面临的问题。

于 2015-04-17T19:08:46.150 回答