我有两棵树使用jsTree和dnd插件 我希望每个拖动操作都是副本而不是移动 有一个“copy_modifier”在按下修饰键时可以正常工作,但是我希望复制成为没有修饰符的默认行为。 有什么想法吗?
谢谢,
阿德里安
答案 0 :(得分:3)
在http://groups.google.com/group/jstree上找到解决方案
配置jsTree时添加了以下部分:
“crrm”:{
“move”:{“always_copy”:“multitree”}
}
希望这有帮助,
阿德里安
答案 1 :(得分:2)
Adrian的解决方案不适用于新版本。 有dnd插件总是复制标志 dnd.always_copy
设置此标志将进行所有拖放复制操作而不是移动。但是如果你正在寻找一个解决方案,你需要在内部树元素上移动dnd但是树之间的树是复制而不是这里的黑客:
在页面上保留全局变量标记
处理copy_node.jstree事件并更新您的全局标志 data.is_multi(data是事件函数的第二个arg)
实现check_callback函数,如果操作是delete_node并设置了您的标志,请取消设置您的标志并返回false,以防止从dnd中删除。
答案 2 :(得分:2)
新版本的另一种解决方案。它有效,但没有经过全面测试。
"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;
}
}