jsTree:预防TYPE之前和之后,仅在内部使用

时间:2010-03-15 05:39:55

标签: javascript jquery tree jstree

我正在使用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,另一个文件夹被放入。

1 个答案:

答案 0 :(得分:2)

取自jstree常见问题解答,这可能对您有所帮助:

  

移动或创建“内部”节点时   另一个节点,回调REF_NODE   不指向新的父节点。   怎么办?

     

这不是错误!因为你能   在特定位置创建节点   在父节点的子节点中,   仅传递父节点不会   足够。这就是你必须永远的原因   检查传递给的TYPE参数   回调!如果你想永远工作   与父节点 - 添加此行   在回调的顶部:

if(TYPE != "inside") { 
  TYPE="inside"; 
  REF_NODE = $(NODE).parents("li:eq(0)").get(0); 
}