【发布时间】:2010-05-04 17:10:24
【问题描述】:
我知道有一个名为 jquery.tree.checkbox.js 的 jsTree 插件。 这使得树节点可以多检查。
我只是想知道是否有一个插件来raido 检查树节点? 或者我如何修改 jquery.tree.checkbox.js 来实现?
【问题讨论】:
标签: javascript jquery checkbox plugins jstree
我知道有一个名为 jquery.tree.checkbox.js 的 jsTree 插件。 这使得树节点可以多检查。
我只是想知道是否有一个插件来raido 检查树节点? 或者我如何修改 jquery.tree.checkbox.js 来实现?
【问题讨论】:
标签: javascript jquery checkbox plugins jstree
这可以简单地通过添加属性来完成
rules:{
multiple : false
}
在树的配置里面。 这样就无法选择多个条目。
【讨论】:
@Asaf 的回答似乎在 2016 年的 3.3.1 版本上不再适用。您现在需要在 core 上设置 multiple:
$jstree.jstree({
core: {
multiple: false,
...
}
});
【讨论】:
设置multiple:false 仍将允许级联,因此您也需要将其关闭。
版本3.3.3
$(".tree").jstree({
plugins: ["checkbox"],
core: {
data: ...,
multiple: false
},
checkbox: {
three_state: false,
cascade: "none"
}
});
【讨论】:
单选按钮选项仍未释放,因此您必须将复选框选项更改为单选。
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);
}
});
});
【讨论】:
将 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
【讨论】: