我正在尝试使用http://mbraak.github.com/jqTree/
我不希望用户将根节点移动或将子节点移动到根。 onCanMove参数可以正常工作,但无法正确显示onCanMoveTo。这样的工作是,如果我的父母中有孩子,但是如果父母中的孩子为空,我将无法在其中移动任何孩子
我试图在onCanMoveTo函数中使用event.move_info.target_node.getLevel(),但我发现有些困惑。
更改“ node1”子级的顺序通常会返回event.move_info.target_node.getLevel()=2。例如,如果我将“ child3”移到“ child2”上方,并且以其他方式移动。
但是,如果我将“ child3”移到“ child1”上方,那么“ child1”成为“ node1”的第一个子级,那么event.move_info.target_node.getLevel()返回1。 “ node1”和“ node2”是,所以不确定为什么会这样。
var data = [
{
label: 'node1',
children: [
{ label: 'child1' },
{ label: 'child2' },
{ label: 'child3' }
]
},
{
label: 'node2'
}
];
$('#tree1').tree({
data: data,
autoOpen: true,
dragAndDrop: true,
onCanMove: function(node) {
if (!node.parent.parent) {
// Cannot move root node
return false;
} else {
return true;
}
},
onCanMoveTo: function(moved_node, target_node, position) {
if (!target_node.parent.parent) {
return false;
} else {
return true;
}
}
});
$('#tree1').on(
'tree.move',
function(event) {
console.log('moved_node', event.move_info.moved_node);
console.log('target_node', event.move_info.target_node);
console.log('target_node level', event.move_info.target_node.parent.getLevel());
console.log('position', event.move_info.position);
console.log('previous_parent', event.move_info.previous_parent);
}
);