我在同一页面上有两个dynatrees。树1具有不同数量的节点,树2是空的。我想从树1拖动一个节点并将其放在树2上。一切正常,而树2不是空的。但是,如果树2为空,则它根本不起作用。这是我的代码:
$('#tree1').dynatree({
dnd: {
onDragStart: function (node) {
return true;
}
}
});
$('#tree2').dynatree({
dnd: {
onDragEnter: function (node, sourceNode) {
return true;
},
onDrop: function (node, sourceNode, hitMode, ui, draggable) {
var copyNode = sourceNode.toDict(true, function (dict) {
delete dict.key;
});
node.addChild(copyNode);
}
}
});
谁能告诉我如何解决这个问题?提前完成。
答案 0 :(得分:1)
在阅读了dynatree源代码(版本1.2.0)之后,我发现在没有修改源代码的情况下,无法将节点添加到空树中。这是因为当您尝试将源节点删除到目标树时,它实际上是将源节点删除到目标节点之前/之后/之后而不是目标树。因此,如果树中没有节点,则dynatree将不起作用。
答案 1 :(得分:1)
我做了类似的事情:
var tree1Dragging = false,
tree2Over = false;
$('#tree1').dynatree({
dnd : {
onDragStart : function(node) {
tree1Dragging = true;
return true;
},
onDragStop : function(node) {
critDrag = false;
if (tree2Over) {
//TODO do your drop to tree2 process here (get the root and append the "node" to it for example)
}
}
}
});
$('#tree2').dynatree({
dnd : {
onDragEnter : function(node, sourceNode) {
return true;
},
onDrop : function(node, sourceNode, hitMode, ui, draggable) {
var copyNode = sourceNode.toDict(true, function(dict) {
delete dict.key;
});
node.addChild(copyNode);
}
}
});
// Add mouse events to know when we are above the tree2 div
$("#tree2").mouseenter(function() {
if (tree1Dragging) {
tree2Over = true;
}
}).mouseleave(function(){
tree2Over = false;
});