2010-03-15 89 views
1

我使用jsTree这是非常好的。在拖放时,我并不十分关心前后类型,我只想在里面使用。意思是说,我只关心那个孩子被放入的父母,而不是那里的命令与其他元素内部的父母。jsTree:防止前后TYPE,只能用在

所以,我想建立我的回调,所以它总是指它在里面的父节点。但是,这还不是很好的证明。

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

当试图的示例中,拖动其他文件夹到模板文件夹。您应该警告您将其他文件夹移动到文件夹4中。但是,如果您在拖入模板文件夹之前和之后尝试不同,则有时会得到不确定。所以,结果并不总是如预期的那样。就像我说的,我总是想知道父文件夹,在这种情况下是4,另一个文件夹被放入。

+0

上如一个小样本jsbin会有所帮助。而你不是什么愚蠢的证明。在哪些情况下不起作用? – jitter 2010-03-15 11:12:26

+0

新增jsbin示例... – 2010-03-15 14:01:14

回答

2

从jstree FAQ两者,这可能是帮助你:

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

这不是一个错误!因为您可以在父节点的子节点 之间创建节点 ,因此只能通过父节点不会 就足够了。这就是为什么你必须总是 检查传递给 回调的TYPE参数!如果你想永远与父节点工作 - 在回调的顶部添加此行 :

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