2010-03-15 30 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); 
}