2013-07-29 82 views
0

我想禁用滚动我的整个JQM的web应用程序,但如果你试图在一个div滚动与某一类,然后滚动是允许允许子元素touchmove

所以我滚动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,它不会滚动。

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

回答

5

这是我怎么一直在做:

$(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); 
    } 
}); 
+0

大,完美的作品。感谢您的快速回复 – mhartington

+0

这在容器边缘失败。例如,如果您滚动到“可滚动”容器的末尾,然后开始新的滚动并继续向下滚动,则会移动背景页面。 – Mathletics

+0

的确如此。你还需要加入类似我的编辑添加的内容。如果除此之外还有一种解决方法,那会很好。 – kalley