Я пытаюсь использовать http://mbraak.github.com/jqTree/
Я не хочу, чтобы пользователи перемещали корневые узлы или перемещали дочерние узлы в корень.Параметр onCanMove работает нормально, но не может получить правильное значение onCanMoveTo.Это работает, если у меня есть родители в родительском элементе, но если родитель пустой, я не могу переместить ни одного дочернего элемента внутрь
. Я пытался использовать event.move_info.target_node.getLevel () в моем onCanMoveTo.функция, но я заметил, что что-то сбивает с толку.
Изменение порядка "node1" дочерние элементы обычно возвращает event.move_info.target_node.getLevel () = 2. Например, если я переместить "child3" выше "child2" и другим способомкруглый.Однако, если я перемещу «child3» выше «child1», то «child1» становится первым дочерним элементом «node1», тогда event.move_info.target_node.getLevel () возвращает 1. Я не перемещаю его на тот же уровень, где«узел1» и «узел2» есть, поэтому не уверен, почему такой результат.
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);
}
);
http://jsfiddle.net/V5dLM/860/