我正在使用jsTree非常好。拖放时,我并不关心前后类型,我只想在里面使用。意思是,我只关心那个孩子被堕入的父母,而不是那个命令与父母内部的其他元素在一起的地方。
所以,我想构建我的回调,因此它总是引用它所在的父节点。但是,它并不是万无一失的。
onmove : function (NODE,REF_NODE,TYPE,TREE_OBJ,RB) {
if (TYPE == 'inside') {
alert('Item to move:'+$(NODE).attr('rel')+' to '+$(REF_NODE).attr('rel')+' '+TYPE);
} else if (TYPE == 'after') {
alert('Item to move:'+$(NODE).attr('rel')+' to '+$(REF_NODE).parent().parent('li').attr('rel')+' '+TYPE);
}
},
有没有人有建议,如何更改我的回调,以便REF_NODE始终是NODE被移入的父级?而不是兄弟姐妹,这是父母的孩子?
以下是jsbin:http://jsbin.com/uroye3/2
的示例尝试该示例时,将其他文件夹拖到Templates文件夹中。您应该被警告您正在将其他文件夹移动到文件夹4.但是,如果您在拖动到Templates文件夹之前和之后尝试不同,您有时会得到未定义。因此,结果并不总是如预期的那样。就像我说的,我总是想知道父文件夹,在这种情况下是4,另一个文件夹被放入。
答案 0 :(得分:2)
取自jstree常见问题解答,这可能对您有所帮助:
移动或创建“内部”节点时 另一个节点,回调REF_NODE 不指向新的父节点。 怎么办?
这不是错误!因为你能 在特定位置创建节点 在父节点的子节点中, 仅传递父节点不会 足够。这就是你必须永远的原因 检查传递给的TYPE参数 回调!如果你想永远工作 与父节点 - 添加此行 在回调的顶部:
if(TYPE != "inside") {
TYPE="inside";
REF_NODE = $(NODE).parents("li:eq(0)").get(0);
}