2011-12-13 134 views
8

我目前正在使用JS树插件和相关的复选框插件的一些POC。 因为我需要在默认情况下选中该复选框,并禁止其他selection.I某些节点发现功能来隐藏复选框jstree禁用复选框

.bind("load_node.jstree", function (e, data) { 
      $(this).find('li[rel!=file]').find('.jstree-checkbox:first').hide(); 
     }); 

,而不是隐藏复选框完全我想找到一种方法来禁用复选框

+0

考虑以更undestandable重写的问题。 – athspk

回答

10

您需要定义一个“禁用”类型(使用类型插件),然后将该类型分配给所需的节点。

就拿这个“已禁用”类型定义:

  "types" : { 
       "types": { 
       "disabled" : { 
         "check_node" : false, 
         "uncheck_node" : false 
        } 
       } 
      } 

和类型分配新建分配FY:

$.jstree._reference('#tree').set_type("disabled", "#node5"); 

上的各类插件的更多信息,可以发现here,你也可以检查this google group with more info on disabling checkboxes

希望它有帮助!

1

谢谢mcabral和Tomasz的回答。它帮助我取得了正确的结果。但是,我需要添加一些额外的行才能正常工作。下面是我做的:

您需要两个属性添加到<li>标签至极是rel='disable'指示jstree,这将是新类型的复选框,而不是默认和class='jstree-checked'属性,它会预先检查加载树时的复选框。

$rel = ('if the checkbox need to be pre-checked')? 'rel="disabled" class="jstree-checked"' : ''; 
      echo '<li id="checkbox_id" '. $rel .'>'; 

然后根据你需要定义在rel属性中使用如下的“禁用”型以前的答案:

.jstree({ 
        "types" : 
        { 
         "types" : { 
          "disabled" : { 
           "check_node" : false, 
           "uncheck_node" : false 
          } 
         } 
        }, 
     "plugins" : ["themes","html_data","ui","crrm","types", "checkbox"], 
        "checkbox" : { "two_state" : true }, 
    })