javascript - 在基于触摸的设备上禁用外部内容的滚动(Twitter Bootstrap 导航栏)

标签 javascript jquery twitter-bootstrap

我使用 twitter bootstrap 3。我添加了固定的顶部导航栏。我在导航栏上有下拉按钮。当用户单击按钮时,将打开一个下拉菜单。对于桌面用户来说没问题。但对于移动用户,当用户向下滚动下 zipper 接时,后面的页面也会滚动。

是否可以在用户滚动下 zipper 接时禁用后台页面滚动?

fiddle :http://jsfiddle.net/mavent/2g5Uc/1/

当用户触摸下拉部分并像绿色箭头一样触摸时,背景页面像这个屏幕截图中的红色箭头一样滚动: enter image description here

<nav class="navbar navbar-inverse navbar-fixed-top visible-xs" role="navigation">
    <div class="navbar-header" style="text-align:center;">
     .......
    </div>

编辑:我检查了that , thatthat .

编辑: 这是行不通的。这将停止所有页面滚动。

$('#my_navbar_div').bind('touchmove', function(event)
{
    event.preventDefault();
});

这行不通。没有改变任何行为:

$('#my_navbar_div').hover(function() {
    $(document).bind('touchstart touchmove',function(){
        $("body").css("overflow","hidden");
    });
}, function() {
    $(document).unbind('touchstart touchmove');
});

最佳答案

要更好地控制滚动功能,您可以尝试以下操作。

禁用所有滚动

//create the exception variable.
var Scrollable = '.scrollable';

    //prevent all scrolling.
    $(document).on('touchmove', function(e) {
        e.preventDefault();
    });

    $('body').on('touchstart', Scrollable, function(e) {
        if (e.currentTarget.scrollTop === 0) {
            e.currentTarget.scrollTop = 1;
        } else if (e.currentTarget.scrollHeight === e.currentTarget.scrollTop + e.currentTarget.offsetHeight) {
            e.currentTarget.scrollTop -= 1;
        }
    });

下面是允许滚动的异常:

    // Stops preventDefault from being called on document if it sees a scrollable div
    $('body').on('touchmove', Scrollable, function(e) {
        e.stopPropagation();
    });

您想要做的是在您希望滚动的每个元素上设置一个名为 scrollable 的类。您当然可以随时调用 stopPropagation()

这样你就可以很容易地决定你是否想要滚动或不滚动,溢出并不总是像你想象的那样工作。

希望对您有所帮助。

编辑:您还应该尝试将您的#nav 的z-index 设置得比您 body 的z-index 高/内容容器。

关于javascript - 在基于触摸的设备上禁用外部内容的滚动(Twitter Bootstrap 导航栏),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20010688/

相关文章:

javascript - 在 Node Express 中检测社交机器人

Javascript 函数不执行且不返回数组

javascript - 在 Chrome 和 Safari 中启动 Angular JS 应用程序有什么不同?

javascript - Jquery不执行简单的条件

javascript - Jqueryui 对话框 ("close") 结束当前 javascript 线程

javascript - 使用 jquery 或 vanilla javascript 将此函数的范围更改为调用程序

javascript - AngularJS 表单验证不起作用,显示空表单

javascript - 可能很简单 : showing and hiding a div using removeClass/addClass

javascript - 阻止 javascript 调用直到模式退出

php - 如何从 Bootstrap Modal 表单获取值?