【发布时间】:2010-09-17 10:51:06
【问题描述】:
我有 2 棵树使用 jsTree 和 dnd 插件。
我希望每个拖动操作都是副本而不是移动。
有一个“copy_modifier”在按下修饰键时可以正常工作,但我希望复制成为没有修饰符的默认行为。
有什么想法吗?
谢谢,
阿德里安
【问题讨论】:
标签: jstree drag-and-drop
我有 2 棵树使用 jsTree 和 dnd 插件。
我希望每个拖动操作都是副本而不是移动。
有一个“copy_modifier”在按下修饰键时可以正常工作,但我希望复制成为没有修饰符的默认行为。
有什么想法吗?
谢谢,
阿德里安
【问题讨论】:
标签: jstree drag-and-drop
在http://groups.google.com/group/jstree找到解决方案
我在配置 jsTree 时添加了以下部分:
“crrm”:{
“移动”:{“always_copy”:“多树”}
}
希望这会有所帮助,
阿德里安
【讨论】:
新版本的另一种解决方案。它可以工作,但没有经过全面测试。
"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(data是事件函数的第二个arg)
实现check_callback 函数,如果操作是delete_node 并且设置了您的标志,则取消设置您的标志并返回false,防止从dnd 中删除。
【讨论】: