【问题标题】:HTML5 Drag and Drop with insertBefore使用 insertBefore 进行 HTML5 拖放
【发布时间】:2013-11-05 21:12:34
【问题描述】:
我正在做一个拖放项目。
如何:我正在使用 HTML5 拖动事件。
代码:见 fiddle here
问题:它有时只能工作,我检查了代码一百万次
Idea:
- Get element and drag it over a div with id: LayerN (N=number)
- Create a new layer before LayerN when dropping
- AppendChild to new Layer.
- Remove empty layers if there are any.
我做错了什么或太复杂了吗?我不想使用 JQuery 框架,我想了解我在做什么。非常感谢您的阅读,任何帮助将不胜感激。
【问题讨论】:
标签:
javascript
html
drag-and-drop
【解决方案1】:
我无法让你的小提琴工作,所以我给出的是一般的 cmets,而不是一个完整的“答案”,所以希望它有所帮助!
对于 D&D,我发现最有效的方法是在页面加载时将 mousedown 事件附加到文档(或可拖动对象的包含元素,如果这更合适的话)。
在此阶段不要将任何事件附加到可拖动元素本身。
在鼠标按下时,检查目标的类名/ID 以及它是否可拖动:
我隐藏元素而不是移动它,因为如果取消拖动很容易恢复它。
将 mousemove 和 mouseup 事件附加到窗口或文档。你在 mousemove 上调用的函数可以根据 event.target/event.srcElement 来决定被拖动的对象是否可以被拖放(再次,我通常在这里寻找一个类名)。
这样,您最多只有两个事件侦听器运行所有内容,而不是每个元素上的多个事件。我怀疑您的事件侦听器可能会相互绊倒。
我不知道这是否能让你更进一步,但祝你好运!