2016-02-27 119 views
1

我使用:jstree使節點和它的孩子們

jstree("disable_node", "#" + NodeID); 

在jstree禁用節點。並使用:

jstree("enable_node", "#" + NodeID); 

啓用節點。

有沒有簡單的方法來disable/enable一個節點,它的孩子?

謝謝

回答

1

您可以使用下面的代碼。檢查演示 - Fiddle

  1. 寫遞歸函數來遍歷你需要

    changeStatus(NodeID, 'enable'); 
    

    changeStatus(NodeID, 'disable'); 
    
什麼

function changeStatus(node_id, changeTo) { 
    var node = $("#tree").jstree().get_node(node_id); 
    if (changeTo === 'enable') { 
     $("#tree").jstree().enable_node(node); 
     node.children.forEach(function(child_id) { 
      changeStatus(child_id, changeTo); 
     }) 
    } else { 
     $("#tree").jstree().disable_node(node); 
     node.children.forEach(function(child_id) { 
      changeStatus(child_id, changeTo); 
     }) 
    } 
} 
  • 通話功能取決於多層次結構

  • 1

    我寫的基於jstreedocumentationget_node功能和jstreeJSON數據格式enable/disable輸入節點一個簡單的JS功能,它的所有的孩子在任何級別:

    NodeToggleEnable = function (node_id, enable) { 
         var tree = $("#jstree-locations"); 
         var sub_tree = [node_id.toString()]; 
         var index = 0; 
        while (index < children.length) { 
         var child = tree.jstree("get_node", "#" + children[index]).children; 
         sub_tree = sub_tree.concat(child); 
         if (enable == false) 
          tree.jstree("disable_node", "#" + sub_tree[index]); 
         else 
          tree.jstree("enable_node", "#" + sub_tree[index]); 
         index++; 
        } 
    } 
    

    此功能使用由get_node函數選擇的節點的children(字符串或對象的數組)屬性。