【发布时间】:2021-02-09 17:56:27
【问题描述】:
我正在构建一个可水平拖动的菜单:
代码非常简单,拖动效果很好:
$draggable.draggable({
axis: "x",
distance: 30,
delay: 40,
scroll: false
});
这是一个高层次的问题:
-
使用 jQuery Draggable:
每次您看到鼠标从一个按钮移动到另一个按钮时,您都可以假设我在点击。如您所见,有一些点击被忽略/错过(根本不调用点击回调)。
-
没有 jQuery Draggable
您可以看到没有错过任何点击(并且由于某种原因,当 jquery draggable 打开时,没有出现这个浏览器蓝色叠加层,这可能是问题的一部分)
我尝试使用 jQuery 可拖动的 distance 和 delay 选项,但它似乎不会以任何方式影响问题。
我还有一个可能相关的次要问题。在 Android 9 上,在 Chrome 上,您几乎无法点击按钮。当您单击“填充”部分时它可以工作,而不是文本本身,这对我来说真的很奇怪。在 iOS 上,它运行良好。
如果有帮助,这里是标记:
你知道为什么 jQuery Draggable 会破坏桌面和/或移动设备上的点击吗?
【问题讨论】:
-
我首先建议你定义一个句柄。这将帮助
click冒泡dragstart。如果您不想添加句柄,那么distance可能是一个问题(不推荐使用的版本:1.12)。如果单击没有启动拖动,那么它应该被读取为click与dragstart事件。否则提供一个最小的、可重现的示例:stackoverflow.com/help/minimal-reproducible-example -
根据 jQuery UI API 文档,
Distance和Delay选项在 1.12 版中已弃用。具体来说:(#10615) 交互应该是即时的。这些设置通常用于防止意外拖动,但适当的解决方法是改善用户体验,例如,使用手柄来避免意外拖动。 -
感谢您抽出宝贵时间。我敢打赌,一个句柄会有所帮助,但这并不是这种菜单的预期用户界面。 Imo 用户希望能够在不瞄准手柄的情况下拖动它。不幸的是,它在某些设备上运行良好。是的,我注意到这两个选项已被弃用,但它们仍在工作(我注意到它们的效果),并且由于 jUI 没有在 aaages 中更新,如果它们解决了我的问题,我很乐意使用它们。如果我真的很绝望,我会尝试使用手柄,但希望有人可以帮助我。或者也许我可以使用另一个拖动库。
标签: android vue.js jquery-ui onclick jquery-ui-draggable