【发布时间】:2014-08-11 19:01:34
【问题描述】:
TL;DR
我想使用 HTML5 将元素拖放到带有拖动 Hammer.js 事件的容器中。但是,也有冲突。
详细说明:
如附图所示,我有两个容器:
- 左: 带有可拖动元素的容器
- 右:包含 Hammer.js 事件的容器,即 drag、dragstart 和 dragend。
我想将元素从左侧容器拖放到右侧。 但是,在拖动时,当进入右侧容器时,会激活 Hammer.js 的 dragstart 事件。删除元素后,我在右侧容器上应用拖动事件。但是,Hammer.js 拖动事件被激活,它会考虑上一个 dragstart 事件中的 deltaX 和 deltaY。
Hammer.js 与 preventDefault: true: 一起使用:
Hammer(this.container, {preventDefault: true}).on('dragstart', function (event) { ... }
我已经在可拖动元素的dragstart上使用了event.preventDefault()和event.stopPropagation(),没有成功。
我也部分解决了这个问题。在 Hammer.js 容器的 dragstart 事件中,我添加了以下验证,以检查源元素和目标是否相同。但是,右侧容器中的拖动仅适用于第二个动作,因为第一个动作被忽略了。
if (event.gesture.startEvent.srcEvent.srcElement != event.gesture.target) {
return false;
}
知道如何在使用 HTML5 拖放 API 拖动元素时防止 Hammer.js 事件吗?
我想使用标志作为最后的手段,因为 Hammer.js 事件应该由第三方开发。
感谢您的帮助。
【问题讨论】:
-
您已经找到解决方案了吗?
标签: javascript jquery html drag-and-drop hammer.js