仅在同一父级中启用节点的拖放

Posted

技术标签:

【中文标题】仅在同一父级中启用节点的拖放【英文标题】:Enable drag and drop of nodes only within the same parent 【发布时间】:2013-02-08 17:15:42 【问题描述】:

我有一个带有多个节点的 ExtJs (3.4) 树,每个节点都有多个子节点。我想允许在每个父母中进行拖放,并且我想禁止将一个父母的孩子拖放到其他父母。

有没有一种简单而优雅的方式来做到这一点?否则,我正在考虑使用 onNodeDrop 和 onNodeOver 事件。

谢谢

【问题讨论】:

【参考方案1】:

使用 jQuery-ui .sortable() http://jqueryui.com/sortable/

在不连接列表的情况下调用 .sortable() 将允许您仅在其父项中对其进行排序。

【讨论】:

对不起,我不能使用 jQuery,因为我的树绑定到 GeoExt 库。我绝对需要使用来自 ExtJS 的 Trees。 实际上你可以一起使用这两者,因为它们有不同的命名空间,你可以将 GeoExt 回调集成到一个闭包中以实现可排序回调。 但否则我会选择 onNodeDrop 事件,如果你想要反馈“你不能放在这里”或“你可以放在这里”,请使用 onNodeOver 事件。几周前我从头开始编写了自己的拖放库来处理 jQuery-ui 无法处理的树情况,并且仅使用本机 js 的跨浏览器仍然只有大约 200 行,因为你有您可以使用它的自定义事件可能会更容易

以上是关于仅在同一父级中启用节点的拖放的主要内容,如果未能解决你的问题,请参考以下文章

在 Avalonia 中实现 TreeView 节点的拖放

Javafx 可检索的拖放错误

如何在VueJs中实现html元素的拖放

仅在父级中运行 Maven 插件

如何仅在android中限制沿y轴的拖放?

Spring data JPA:如何启用级联删除而不引用父级中的子级?