【问题标题】:jQuery touchstart touchmove touchend interactivityjQuery touchstart touchmove touchend 交互性
【发布时间】:2014-05-16 23:27:19
【问题描述】:

我有一个带有几个小框的页面,当您点击它们时,它们会展开/折叠以显示详细信息。现在我正在使用 touchstart 事件处理程序来触发展开/折叠,并且一切正常。

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

我的第一直觉是简单地将展开/折叠功能从 touchstart 移动到 touchend,然后将处理程序附加到用于 touchmove 的框并调用 event.stopImmediatePropagation(),这可以防止 touchend 在您开始滚动时触发。这可行,但是,touchend 的响应速度似乎不如 touchstart,因为它需要相当长的刻意触摸才能触发它,而 touchstart 非常快速且响应迅速并且工作得非常好。

我已经在 iPad(第 4 代,在 Safari 和 Chrome 中进行了测试)上进行了测试,这就是 touchend 响应速度不快的地方。我还在 Nexus 10 Android 平板电脑 (Chrome) 上进行了测试,但 touchend 似乎根本没有启动。

对于 1) 改进我概述的解决方案的方法或 2) 解决此问题的另一种方法,是否有人有任何建议?

【问题讨论】:

    标签: jquery scroll touch


    【解决方案1】:

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

    【讨论】:

    • 谢谢,我试试看。
    猜你喜欢
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多