2011-12-06 260 views
3

我正在开发使用jQuery移动移动应用程序,我有以下问题:防止页面滚动

我有一个具有内部带有垂直滚动股利的菜单。一旦滚动到达容器的底部,它就开始滚动页面本身,这不是我想要的。有没有办法阻止这种行为?我的意思是,允许滚动菜单的滚动直到底部,当它发生时,当我在菜单上滚动时否认页面滚动?

更新:

下面是具有相同的问题原始的例子 - http://jsfiddle.net/Wg8pk/

如果向下滚动“菜单选项”,它会下来的时候菜单到达终点滚动页面。

+0

听起来像是你有一些可怜的CSS标记导致滚动(东西总是推容器) - 对于你的问题,你总是可以任意的.css(“溢出”,“隐藏”),或添加有规则类在它的元素 –

+0

是否有垂直滚动下的内容?如果这是页面的底部,你应该没问题。你有没有页脚? –

+0

现在我没有菜单下的内容。菜单有一个位置:绝对,它的动态高度是通过设置top:202px和bottom:3px设置的,使用overflow-y:auto设置,这样垂直滚动在它应该的时候出现。 这个菜单没有解析jQuery手机,因为它不在data-role =“page”里面,因为它出现在所有页面上。 我也做了一个测试,把垂直滚动的数据角色=“内容”的div内,问题依然存在。 –

回答

0

您需要做的菜单有一个固定的高度,然后用css来防止溢出。 用户overflow:hidden;应该工作

1

如何调用元素event.preventDefault()你滚动:

$('#my-scroll-div').bind('touchmove', function (event) { 
    event.preventDefault(); 
}); 

我不知道哪个事件将是更好地结合,但touchmove好像它会工作。如果你设置了你的代码的jsfiddle,我们可以给出更好的建议。

+0

下面是具有相同的问题原始的例子 - http://jsfiddle.net/Wg8pk/。 如果向下滚动“菜单选项”,当菜单到达结尾时,它将向下滚动页面。 –

+0

@Sérgiohttp://jsfiddle.net/Wg8pk/1/我在Android设备上测试过,当我尝试在'#mainNavigation'元素上滚动时,它不起作用。 – Jasper

+0

@Jasper的目标不是阻止#mainNavigation,而是在#mainNavigation的滚动到达结尾时阻止页面滚动。 –