jquery - jstree 3 - dnd - 限制删除到某个节点

标签 jquery drag-and-drop jstree

使用 jstree 我想限制树的深度,不允许在某些节点上放置。

这是我的(简化的)代码:

$('#tree').jstree({
    "plugins":["dnd"],
    "core":{
        "check_callback":true
    },
    "dnd":{
        "copy":false
    }
}).on("move_node.jstree", function(node,nodes){
    console.log("node : "+nodes.node.id);
    console.log("parent : "+nodes.node.parent);
    console.log("position : "+nodes.position);
});

我找到了有关旧版本的文档,但没有找到 jstree 3

我尝试了经典的 return false;在 move_node 函数的某些条件下 - 它不会改变任何东西。 所以我想我的问题很简单:如何在某些条件下禁用 move_node - 最好的方法是不允许拖动某些节点(即不显示它们前面的三角形 - 以及红叉而不是绿色标记) 当然,这个节点仍然是可拖动的,并且与任何其他节点一样。

最佳答案

在 jsTree 中,使用“types”插件,您可以限制删除某些节点,您可以在其中指定任何节点,并通过设置“max_children”、“等参数来指定允许的子节点数量、节点内部允许的最大节点深度” max_深度”,“valid_children”。

检查这个Demo供您引用。

在最新的 jsTree v3+ 中,这个“types”插件并没有在 dnd 插件中完全实现。

如果您看到源代码行号 5036(在 dnd 插件中),则有类似这样的注释:

// TODO: now check works by checking for each node individually, how about max_children, unique, etc?
// TODO: drop somewhere else - maybe demo only?

因此需要等待jsTree的下一个版本。

关于jquery - jstree 3 - dnd - 限制删除到某个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24082992/

相关文章:

eclipse - 在 Eclipse 项目资源管理器中拖放文件时,从未调用 DragSourceListener

javascript - JSTree:移动所有子节点

javascript - jsTree 对象没有方法 addBack

jquery - 如何发送带有变量的 GraphQL AJAX 查询?

javascript - AngularJS : drag-n-drop directive not working

jquery - 使用 jquery 插入 LI 元素看起来与硬编码元素不同

Delphi - 使用 ListView 拖放

jquery - jsTree 复选框插件错误

javascript - jQuery:如果用户点击的元素类与被点击元素的类匹配,则删除该类元素

javascript - 按 'ctrl' 键时,jQuery 选项卡插件未在新浏览器选项卡中打开