禁用Jstree的某些复选框

时间:2013-04-03 10:33:09

标签: javascript jquery jstree

所以我有一个用JsTree创建的Checkbox树。我想要做的是将所有复选框最初设置为禁用,然后我有一个包含li标签的ID的数组。通过浏览表格,我应该启用属于具有特定ID的标签的复选框。选中时,树应该遵循与默认顺序相同的顺序(当父检查启用时,应检查子项...等等)。我该怎么办?提前致谢。 PS:JsTree插件很精彩。但是它缺少很多文档。

1 个答案:

答案 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.