Jquery 从动态树/到动态树拖放
我正试图将数据从一个dynatree拖到另一个dynatree。在文档中,一个示例演示了如何在同一棵树中移动节点。是否可以移动一个节点并使用其所有选项将其置于第二个动态树中 第一棵树有:Jquery 从动态树/到动态树拖放,jquery,dynatree,jquery-dynatree,Jquery,Dynatree,Jquery Dynatree,我正试图将数据从一个dynatree拖到另一个dynatree。在文档中,一个示例演示了如何在同一棵树中移动节点。是否可以移动一个节点并使用其所有选项将其置于第二个动态树中 第一棵树有: $("#Tree1).dynatree({ dnd: { onDragStart: function (node) { logMsg("tree.onDragStart(%o)", node);
$("#Tree1).dynatree({
dnd: {
onDragStart: function (node) {
logMsg("tree.onDragStart(%o)", node);
return true;
},
});
第二棵树:
$("#Tree2").dynatree({
dnd :{
onDrop: function (node, sourceNode, hitMode, ui, draggable) {
logMsg("tree.onDrop(%o, %o, %s)", node, sourceNode, hitMode);
sourceNode.move(node, hitMode);
},
onDragEnter: function (node, sourceNode) {
logMsg("tree.onDragEnter(%o, %o)", node, sourceNode);
return true;
}
}
});
提前感谢AFAIK,目前dynatree不支持在不同树之间移动节点。但是,您可以从树1复制节点,并将复制的节点添加到树2。之后,您可以删除树1中的节点。使用这种方法,可以模拟在树之间移动节点的行为 因此,您不必使用sourceNode.move(node,hitMode),而可以使用:
var copyNode = sourceNode.toDict(true, function (dict) {
delete dict.key;
});
node.addChild(copyNode);
希望这有帮助。实际上,你可以做到这一点。您只需将每个dynatree放在div中,并使该div可拖放。DOM可以从Dropable解析dynatree节点对象,因为dynatree正附加到事件中 您可以看到一个工作示例。动态树1(可拖动) 动态树2(可下拉)
试试这段代码,它可以工作。我以前也这么做过。您还没有运行代码吗?或者到底是什么问题?是的,我确实运行了它,在js文件的move函数中出现了一个异常:“MicrosoftJScript运行时错误:异常抛出且未捕获”。这似乎实现了您所寻找的。
$("#tree").dynatree({
dnd: {
revert: false, // true: slide helper back to source if drop is rejected
onDragStart: function(node) {
},
onDragStop: function(node) {
}
},
cookieId:"dynatree-cb1",
idPrefix:"dynatree-cb1-"
});
$("#tree2").dynatree({
dnd: {
autoExpandMS: 1000,
preventVoidMoves: true, // Prevent dropping nodes 'before self', etc.
onDragEnter: function(node, sourceNode) {
if(node.data.isFolder){
return false;
}
return true;
// return "over";
},
onDragOver: function(node, sourceNode, hitMode) {
},
onDrop: function(node, sourceNode, hitMode, ui, draggable) {
logMsg("tree.onDrop(%o, %o)", node, sourceNode);
var copynode;
if(sourceNode) {
copynode = sourceNode.toDict(true, function(dict){
dict.title = "Copy of " + dict.title;
delete dict.key; // Remove key, so a new one will be created
});
}else{
copynode = {title: "This node was dropped here (" + ui.helper + ")."};
}
if(hitMode == "over"){
// Append as child node
node.addChild(copynode);
// expand the drop target
node.expand(true);
}else if(hitMode == "before"){
// Add before this, i.e. as child of current parent
node.parent.addChild(copynode, node);
}else if(hitMode == "after"){
// Add after this, i.e. as child of current parent
node.parent.addChild(copynode, node.getNextSibling());
}
},
onDragLeave: function(node, sourceNode) {
/** Always called if onDragEnter was called.
*/
logMsg("tree.onDragLeave(%o, %o)", node, sourceNode);
}
},
cookieId:"dynatree-cb2",
idPrefix:"dynatree-cb2-"
});