我有 2 棵树使用 jsTree 和 dnd 插件。
我希望每个拖动操作都是副本而不是移动。
有一个“copy_modifier”在按下修饰键时可以正常工作,但我希望复制成为没有修饰符的默认行为。有任何想法吗?
谢谢,
阿德里安
我有 2 棵树使用 jsTree 和 dnd 插件。
我希望每个拖动操作都是副本而不是移动。
有一个“copy_modifier”在按下修饰键时可以正常工作,但我希望复制成为没有修饰符的默认行为。有任何想法吗?
谢谢,
阿德里安
在http://groups.google.com/group/jstree上找到了解决方案
我在配置 jsTree 时添加了以下部分:
“crrm”:{“move”:{“always_copy”:“multitree”}}
希望这会有所帮助,
阿德里安
新版本的另一个解决方案。它可以工作,但没有经过全面测试。
"core": {
"check_callback": function (operation, node, node_parent, node_position, more) {
if (more) {
if (more.is_multi) {
more.origin.settings.dnd.always_copy = true;
} else {
more.origin.settings.dnd.always_copy = false;
}
}
return true;
}
}
Adrian 的解决方案不适用于新版本。有那个 dnd 插件总是复制标志 dnd.always_copy
设置此标志将使所有拖放复制操作而不是移动。但是,如果您正在寻找一种解决方案,您需要在 dnd 上移动内部树元素但树间 dnds 是副本,那么这里有一个 hack:
在页面上保留全局变量标志
处理 copy_node.jstree 事件并从 data.is_multi 更新您的全局标志(数据是事件函数的第二个参数)
实现check_callback函数,如果操作是 delete_node 并且您的标志已设置,则取消设置您的标志并返回 false,防止从 dnd 中删除。