【问题标题】: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 以及它是否可拖动:

      1234563保持这个元素偏移到光标意味着你仍然可以检测到光标下的内容。
    • 隐藏您拖动的元素。如果您希望使用 insertBefore,您可以在此阶段放置某种图像来显示它的来源。

    我隐藏元素而不是移动它,因为如果取消拖动很容易恢复它。

    将 mousemove 和 mouseup 事件附加到窗口或文档。你在 mousemove 上调用的函数可以根据 event.target/event.srcElement 来决定被拖动的对象是否可以被拖放(再次,我通常在这里寻找一个类名)。

    这样,您最多只有两个事件侦听器运行所有内容,而不是每个元素上的多个事件。我怀疑您的事件侦听器可能会相互绊倒。

    我不知道这是否能让你更进一步,但祝你好运!

    【讨论】:

    • 谢谢。精彩的答案。今天过得愉快!
    猜你喜欢
    • 1970-01-01
    • 2013-01-03
    • 2012-04-05
    • 1970-01-01
    • 2012-09-28
    • 1970-01-01
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    相关资源
    最近更新 更多