2013-04-03 118 views
4

所以我有一個用JsTree創建的複選框樹。我想要做的就是將所有複選框設置爲禁用,然後我有一個包含li標籤的id的數組。通過瀏覽表格我應該啓用屬於具有特定ID的標籤的複選框。選中時,樹應該遵循與默認相同的順序(當父母選中時,啓用子項也應該被檢查,等等)。我該如何繼續?提前致謝。 PS:JsTree插件非常棒。但是它缺少很多文檔。從Jstree中禁用某些複選框

+0

您可以使用正常的JStree事件和沼澤標準的jQuery/JavaScript來此。 JSTree沒有什麼特別的要求。基本上,在JSTree加載函數中執行一些操作來循環所有複選框並禁用它們。然後在JSTree選擇功能中,啓用你所需要的。 – webnoob

+0

你可以創建這個html並且建議一個[FIDDLE](http://jsfiddle.net)? – Jai

+0

問題是我沒有複選框類型的輸入,所以我可以禁用它們... –

回答

4

您應該覆蓋默認行爲check_nodeuncheck_node函數,並創建自己的禁用節點類型。

代碼:

$('#tree').jstree({ 
    'plugins' : ['themes', 'html_data', 'checkbox', 'types'], 
    'checkbox' : { 
     'two_state' : true // Nessesary to disable default checking childrens 
    }, 
    "types" : { 
     "types": { 
     "disabled" : { // Defining new type 'disabled' 
      "check_node" : false, 
      "uncheck_node" : false 
     }, 
     "default" : { // Override default functionality 
      "check_node" : function (node) { 
      $(node).children('ul').children('li').children('a').children('.jstree-checkbox').click(); 
      return true; 
      }, 
      "uncheck_node" : function (node) { 
      $(node).children('ul').children('li').children('a').children('.jstree-checkbox').click(); 
      return true; 
      } 
     } 
     } 
    } 
}); 

現在禁用的一個節點,添加屬性rel="disabled"他們li標籤。

Here is an example on JSFiddle.