【问题标题】:can jsTree use radio checkjsTree可以使用无线电检查吗
【发布时间】:2010-05-04 17:10:24
【问题描述】:

我知道有一个名为 jquery.tree.checkbox.js 的 jsTree 插件。 这使得树节点可以多检查。

我只是想知道是否有一个插件来raido 检查树节点? 或者我如何修改 jquery.tree.checkbox.js 来实现?

【问题讨论】:

    标签: javascript jquery checkbox plugins jstree


    【解决方案1】:

    这可以简单地通过添加属性来完成

        rules:{
                multiple : false
              } 
    

    在树的配置里面。 这样就无法选择多个条目。

    【讨论】:

      【解决方案2】:

      @Asaf 的回答似乎在 2016 年的 3.3.1 版本上不再适用。您现在需要在 core 上设置 multiple

      $jstree.jstree({
          core: {
              multiple: false,
              ...
          }
      });
      

      【讨论】:

        【解决方案3】:

        设置multiple:false 仍将允许级联,因此您也需要将其关闭。

        版本3.3.3

        $(".tree").jstree({
            plugins: ["checkbox"],
            core: {
                data: ...,
                multiple: false
            },
            checkbox: {
                three_state: false,
                cascade: "none"
            }
        });
        

        【讨论】:

          【解决方案4】:

          单选按钮选项仍未释放,因此您必须将复选框选项更改为单选。

          bind('check_node.jstree', function(e, data) {
              var currentNode = data.rslt.obj.attr("id");
              $("#tree").jstree("get_checked",null,true).each 
                  (function () { 
                      if(currentNode != this.id){
                          jQuery.jstree._reference($("#tree")).uncheck_node('#'+this.id);
                      }
                  }); 
          });
          

          参考这个http://jsfiddle.net/bwTrP/1/

          【讨论】:

            【解决方案5】:

            将 jsTree 3.2.1 版与复选框插件一起使用,可以模拟单选按钮行为处理“更改”事件,如下所示:

            //jstree configuration:
            'checkbox': {
                three_state: false, //required for the cascade none to work
                cascade: 'none' //no auto all_children<->parent selection
            },
            //...
            
            var resetting = false;
            $('#tree').on('changed.jstree', function (e, data) {
                if (resetting) //ignoring the changed event
                {
                    resetting = false;
                    return;
                }
                if ($("#multiselect").is(':checked') == false && data.selected.length > 1) {
                    resetting = true; //ignore next changed event
                    data.instance.uncheck_all(); //will invoke the changed event once
                    data.instance.check_node(data.node/*currently selected node*/);
                }
            });
            

            JSFiddle:JSTree radiobutton behaviour example using checkbox plugin

            【讨论】:

              猜你喜欢
              • 2015-06-02
              • 2021-09-23
              • 2013-08-16
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-07-15
              相关资源
              最近更新 更多