【问题标题】:Allow touchmove for child element允许子元素的 touchmove
【发布时间】:2013-07-29 14:04:03
【问题描述】:

我想为我的整个 jqm 网络应用禁用滚动,但如果您尝试在具有特定类的 div 上滚动,则允许滚动

所以我的滚动 div .info 应用了 overflow:scroll,我有这个脚本来尝试检测你是否正在触摸它

$('.info').bind('touchstart', function (e) {
    if (e.type == "touchstart") {
       return true; 
    } else {
        event.preventDefault();
    }
});
$(document).bind('touchmove', function () {
    event.preventDefault();
})

目前,文档的滚动功能已关闭,但当我尝试滚动信息 div 时,它不会滚动。

现在我已经看到一些关于这个想法的帖子,但主要是关于固定对象位置,以便当文档滚动时,它会保持在同一个位置。

【问题讨论】:

    标签: javascript jquery html jquery-mobile


    【解决方案1】:

    这就是我一直在做的:

    $(document).on('touchmove', function(ev) {
     if ( !$(ev.target).closest('.is-scrollable').length ) {
        ev.preventDefault();
      }
    })
    

    .is-scrollable 将是您的班级,在这种情况下为 .info

    编辑:修复可滚动 div 顶部和底部的滚动:

    $('.is-scrollable').on('touchstart', function() {
        var el = $(this);
        if ( el.scrollTop() <= 0 ) {
          el.scrollTop(1);
        }
        if ( el.scrollTop() >= el[0].scrollHeight ) {
          el.scrollTop(el[0].scrollHeight - 1);
        }
    });
    

    【讨论】:

    • 这在容器边缘失败。例如,如果滚动到is-scrollable容器的末尾,然后开始新的滚动并继续向下滚动,它将移动背景页面。
    • 确实如此。您还需要合并我的编辑添加的内容。不过,如果除此之外还有其他方法,那就太好了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    相关资源
    最近更新 更多