jsTree隐藏复选框

jbr*_*k10 9 jquery jstree

我使用jsTree jQuery插件来显示5级深度树.我想不在最后一级显示复选框.有没有办法在设置或一些jquery处理中执行此操作后我可以删除这些复选框?我能够使用类型插件禁用它们,但我真的希望它们不可见.

这是我的树的一个例​​子"[x]"=一个复选框

[x] lvl 1
  [x] lvl 2
    [x] lvl 3
      [x] lvl 4
        [x] lvl 5a
        [x] lvl 5b
        [x] lvl 5c
Run Code Online (Sandbox Code Playgroud)

这是我想要的一个例子"[x]"=一个复选框

[x] lvl 1
  [x] lvl 2
    [x] lvl 3
      [x] lvl 4
          lvl 5a
          lvl 5b
          lvl 5c
Run Code Online (Sandbox Code Playgroud)

编辑答案找到了

找到了答案.添加将在加载树时调用的.bind,然后添加一些简单的jquery来隐藏复选框.

$("#right-tree2").bind("loaded.jstree", function(event, data) {
   $('.lvl4').find('ins.jstree-checkbox').hide();
})
.jstree({....});
Run Code Online (Sandbox Code Playgroud)

Mig*_*ell 18

如果你是从JSON创建树,那么我发现删除节点的最简单方法是使用一些css.

  1. 在实际的JSON中,将要禁用的节点的a_attr字段设置为"no_checkbox",如下所示.这会将类"no_checkbox"添加到<a>包含节点文本,图标和复选框的元素中.

    node = { text: "foo", a_attr: { class: "no_checkbox" } }

  2. 在css中,创建一个这样的选择器:

    .no_checkbox>i.jstree-checkbox { display:none }

  3. 完成!

这将仅选择<a>no_checkbox类直接位于元素内的复选框,并将从布局中删除它们.此方法优于其他答案的优点是,您可以通过no_checkbox<a>元素中删除类来恢复复选框.例如,您可以在事件的事件处理程序中执行此操作select_node.jstree,然后获取作为参数传入的DOM节点.

当然,如果您使用HTML而不是JSON输入数据,您可以手动将css类添加到html中,或者使用php /其他服务器端语言,它也可以正常工作.


小智 2

您还可以阻止复选框插件添加它们:

  1. 将一个类添加到<a>您不希望有复选框的任何节点类型的标记中(我使用与我的相关相同的类)。

  2. 编辑jquery.jstree.js Checkbox 插件以将类添加到 .not() 语句,其中复选框将添加到 DOM。在 1.0-rc3 中,它看起来像这样(大约第 2870 行):

    $t.children("a" + (_this.data.languages ? "" : ":eq(0)") ).not(":has(.jstree-checkbox) // ADD THE LIST OF CLASSES HERE - BE SURE TO INCLUDE THE DOTS AND SEPARATE WITH COMMAS ").prepend("<\ins class='jstree-checkbox'>&#160;<\/ins>").parent().not(".jstree-checked, .jstree-unchecked").addClass( ts ? "jstree-unchecked" : c );
    
    Run Code Online (Sandbox Code Playgroud)

这样,您就不必添加然后删除它们(如果可以避免的话,这是不好的做法)。