可以jsTree使用无线电检查

时间:2010-05-04 17:10:24

标签: javascript jquery checkbox plugins jstree

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

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

5 个答案:

答案 0 :(得分:4)

这可以通过添加属性

来完成
    rules:{
            multiple : false
          } 

在树的配置中。 这将使得无法选择多个条目。

答案 1 :(得分:4)

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

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

答案 2 :(得分:3)

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

版本3.3.3

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

答案 3 :(得分:2)

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

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/

答案 4 :(得分:1)

将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