2013-04-03 120 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.