js多节点拖拽是什么思路

发布于 2022-09-12 13:08:15 字数 112 浏览 17 评论 0

看这个示例
单个拖拽

我想实现点击选中多个,然后拖拽,请大佬帮忙看下怎么实现?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

陌路终见情 2022-09-19 13:08:15

既然有示例了,先看懂示例的思路。

handleDrop(event) {
            event.preventDefault();
            event.target.style.border = "1px solid #cc0033";
            const data = event.dataTransfer.getData("Text");
            console.log(data)
            this.insertAfter(document.getElementById(data), event.target)
        },

重点在于handleDrop函数,该函数在drop(放下)时执行,获取drop时触及的元素,然后把拖拽元素插在后面,这是主要思路,边界情况先不考虑。

再考虑你的改进,多个拖拽相较于单个拖拽,区别就在于拖拽后的插入处理逻辑,示例是插入一个元素,你这边就要插入多个元素。

最后考虑一些子问题:
1.插入时,如何获取拖拽元素?示例通过dragstart的event获取元素ID,然后存入dataTransfer。而多个元素时无法通过一个event获取,那么就要用状态来记录选中的元素。
2.如何drop在哪个元素上?示例只有一个元素,所以怎么拖都没问题;你这里有多个元素,那么应该是允许从任意元素开始拖拽的,相应地,计算插入位置也要基于同一个元素

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文