jQuery Mobile和Scrollview自动启用滚动内容div

时间:2012-01-09 12:19:19

标签: jquery jquery-mobile scrollview

我正在使用jQuery MobileScrollview。这对我来说是完美的解决方案,因为我对jQuery Mobile中的滚动功能有一些不好的体验,并且还有一个名为iScroll的插件。

我唯一的问题是现在所有div标签都有data-role="content"自动启用了滚动功能,导致一些触摸事件未触发的最终问题因为触摸必须被捕获滚动。

这些错误仅发生在两个内容页面上,这两个内容页面甚至都不需要滚动。我可以通过设计滚动浏览所有内容,但有没有办法禁用某些div标签的滚动?

4 个答案:

答案 0 :(得分:1)

我挖掘出来源,我找到了解决方法。该插件使用类“ui-scrollview-clip”过滤掉div。 HTH。

答案 1 :(得分:0)

我遇到了同样的问题,我可以使用这个解决方案解决它(thx Dessus):

我认为你可能会发现在scrollview控件中使用了该事件。您可以覆盖该控件的javascript处理程序,以允许它继续冒泡。

要覆盖该功能,您可以使用此技术:在引用原始

时覆盖JavaScript函数

快速浏览一下这个文件,看起来这个方法可以提供你想要的线索:

_handleDragMove:function(e,ex,ey)

具体是:

var svdir = this.options.direction; if(!this._directionLock)

我使用的是此处显示的scrollview版本:http://jquerymobile.com/test/experiments/scrollview/scrollview-nested.html

答案 2 :(得分:0)

我花了很长时间尝试各种各样的事情,但总的想法是我想要一个我可以用来停止滚动内容div(noscroll)的类。

覆盖addClass方法以防止添加ui-scrollview-view类会在其他地方导致很多错误。我不知道为什么,页面上的另一个插件可能会再次覆盖它?

最终我不得不手动更改scrollview.js,因为它只是一个小文件。在第19行,有一个选择器可以选择data-rolecontent的所有元素。在此选择器之后,我添加了.not('.noscroll')

快速更改,我确保无处不在地注意到我已经从原始文件中更改了此文件。但是在试图找到更好的解决方案5个小时后,我找到了它!

答案 3 :(得分:-1)

尝试反转滚动方向。如果你有一个水平scrollView,请执行:

$('#yourid').scrollview({ direction: 'y' });

和'x'表示垂直scrollView。 改回方向以再次启用滚动。