2015-12-15 41 views
0

我需要一種方法來顯示一個關閉圖標的jstree中的節點,但是當打開時,必須觸發「open_node」事件,這將通過本地JSON存儲創建子節點。jstree - open_node沒有在封閉節點上被解僱

這就是我想要

$('#treediv').jstree({ 
     'core' : { 
       'check_callback': true, 
       'data':[{"id":"parent","text":"Parent Node","opened":false}] 
     } 
    }); 
$('#treediv').on('open_node.jstree', function (e, data) { 
        // logic to fetch children and create child nodes 
       }); 

我不想做一個直接的AJAX調用,因此不能使用jstree的負載通過Ajax的選項。

通過上面的代碼,節點顯示一個封閉的圖標,但是當我嘗試打開時,事件不會被觸發;可能是因爲最初沒有孩子。

請告訴我如何才能做到這一點。

回答

0

你可以提供你想創建子節點的節點與一個ID,也許使用dblClick()事件觸發你的邏輯後?

$('#nodeId).dblClick(function(e) { 
    //logic to fetch children and create child nodes 
} 

https://api.jquery.com/dblclick/

+0

當我在節點上單擊這樣我就可以觸發的select_node事件被炒魷魚邏輯,但我需要的是顯示三角形圖標(打開/關閉),當我打開節點時,事件應該被觸發以獲取chi ldren數據並創建子節點。我需要這個,而不用打開節點的AJAX調用。 – Praveen

0

您可以使用open_node事件是這樣的:

.on('open_node.jstree', function (e, obj) { 
    // remove dummy node that was used to enable collapsed icon 
    $('#tree').jstree().delete_node('dummy'); 
    //add new data from json 
    for(var i=0, len=newData.length; i<len; i++){ 
     var nodeId = $('#tree').jstree().create_node(obj.node.id, newData[i]); 
    } 
}) 

檢查小提琴Fiddle