jQuery touchstart touchmove touchend interactive

时间:2014-04-04 15:03:01

标签: jquery scroll touch

我有一个带有几个小盒子的页面,当你点击它们时,它会展开/折叠以显示细节。现在我正在使用touchstart事件处理程序来触发展开/折叠,一切都运行得很好。

我遇到的唯一问题是,当您尝试滑动以滚动页面时,如果您触摸的第一个位置恰好位于其中一个框内,则会触发展开,因为event.preventDefault()是在touchstart事件处理程序中调用它会阻止用户滚动。 我想要发生的事情是,如果您碰巧触摸它,可以滑动滚动而不扩展框,通过在滑动时忽略touchstart事件。

我的第一直觉是简单地将展开/折叠功能从touchstart移动到touchend,然后将处理程序附加到touchmove的框并调用event.stopImmediatePropagation(),这可以防止在开始滚动时触发touchend。然而,这种方法似乎并不像触摸启动那样具有响应性,因为它需要相当长时间的刻意触摸来触发它,而触摸启动非常快速且响应迅速并且运行得非常好。

我已经在iPad上进行了测试(第四代,在Safari和Chrome中测试过),这就是touchend不是很敏感的地方。我还在Nexus 10 Android平板电脑(Chrome)上进行了测试,并且touchend似乎根本没有开火。

有没有人对任何一方提出任何建议?1)改进我所提出的解决方案的方法,或2)另一种解决方法?

1 个答案:

答案 0 :(得分:0)

我最近一直在研究触摸事件以准备新项目,我遇到了另一个可能对您有帮助的Stackoverflow: prevent touchstart when swiping