jquery.tree.checkbox.jsという名前のjsTree用のプラグインがあることを知っています。これにより、ツリーノードがマルチチェック可能になります。
ツリーノードをraidoチェックするプラグインがあるかどうか疑問に思いましたか?または、jquery.tree.checkbox.jsを変更してそれを実現するにはどうすればよいですか?
jquery.tree.checkbox.jsという名前のjsTree用のプラグインがあることを知っています。これにより、ツリーノードがマルチチェック可能になります。
ツリーノードをraidoチェックするプラグインがあるかどうか疑問に思いましたか?または、jquery.tree.checkbox.jsを変更してそれを実現するにはどうすればよいですか?
これは、属性を追加することで簡単に実行できます
rules:{
multiple : false
}
ツリーの構成内。これにより、複数のエントリを選択できなくなります。
@Asafの回答は、2016年のバージョン3.3.1では機能しなくなったようです。次のように設定する必要がありmultiple
ますcore
。
$jstree.jstree({
core: {
multiple: false,
...
}
});
設定multiple:false
してもカスケードは許可されるため、これもオフにする必要があります。
バージョン3.3.3
$(".tree").jstree({
plugins: ["checkbox"],
core: {
data: ...,
multiple: false
},
checkbox: {
three_state: false,
cascade: "none"
}
});
ラジオボタンオプションはまだリリースされていないため、chceckboxオプションをシングルセレクトとして変更する必要があります。
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/
チェックボックスプラグインとともに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ラジオボタンの動作例