優れたJSTree3.0.2を試しています。 1レベルの子ノードを持つツリーがあります。親ノードがクリックされたときに展開したいのですが、親ノードを選択可能にしたくありません。子ノードのみを選択可能にする必要があります。
次を使用して、クリックすると親ノードを開くことができます。
$("#jstree_div").bind("select_node.jstree", function (e, data) {
return data.instance.toggle_node(data.node);
});
しかし、親ノードを選択不可にする方法がわかりません。
タイプを作成し、「select_node」をfalseに設定しました:
"treeParent" : {
"hover_node" : true,
"select_node" : false
}
次に、以下を使用してそれを親ノードに割り当てます。
data-jstree='{"type":"treeParent"}'
ただし、親ノードは引き続き選択可能です。ここでjsfiddleを作成しました: http://jsfiddle.net/john_otoole/RY7n6/7/ この例では、以下を使用して、何かが選択可能かどうかを示しています。
$('#jstree_div').on("changed.jstree", function (e, data) {
$("#selected_element_div").text("Selected built-in: " + data.selected);
});
親ノードの選択を防ぐ方法についてのアイデアはありますか?
私はこれがここでのパーティーにかなり遅れていることを知っています、しかし私はこれと同じ問題を抱えていました。
これは私がそれを回避した方法です-多分それはこの問題を抱えている他の誰かを助けるでしょう。
$('#divCCSS').on('select_node.jstree', function (e, data) {
if (data.node.children.length > 0) {
$('#divCCSS').jstree(true).deselect_node(data.node);
$('#divCCSS').jstree(true).toggle_node(data.node);
}
})
基本的に、子がある場合は、ノードが選択された直後にノードの選択を解除してから、展開します。
パーティーに非常に遅れていますが、jsTree 3.0.4を使用して、ルートノードを次のように装飾します。
<li data-jstree='{ "opened" : true, "disabled" : true }'>
呼び出されたときにルートを開き、クリックを無効にします。それが役に立てば幸い。
<div id="js_tree_container">
<ul>
<li data-jstree='{ "opened" : true, "disabled" : true }'>
<a href="javascript:void(0);" tite="Root Category">
ROOT NODE
</a>
<ul>
<li>
<a href="javascript:void(0);">
<span>Child One</span>
</a>
<ul>
<li>
<a href="javascript:void(0);">
<span>Child A</span>
</a>
</li>
<li>
<a href="javascript:void(0);">
<span>Child B</span>
</a>
</li>
</ul>
</li>
<li>
<a href="javascript:void(0);">
<span>Child Two</span>
</a>
</li>
</ul>
</li>
</ul>
</div>
<script>
$('#js_tree_container').jstree({
'core': {
'themes': {
'name': 'default',
'responsive': true
},
'check_callback': true
}
}).bind("select_node.jstree", function (e, data) {
var href = data.node.a_attr.href;
document.location.href = href;
});
</script>
無効化されたアイテムのselect_node.jstreeイベントを防ぐために別の問題がありましたが、あなたのケースではうまくいくと思います。
'conditionalselect'プラグインを使用して問題を解決しました。
$('#jstree').jstree({
'conditionalselect' : function (node) {
// Check node and call some method
return (node['someProperty']) ? true : false;
},
'plugins' : ['conditionalselect'],
'core' : {
<core options>
}
});
クリックするとノードを確認し、展開折りたたみロジックをトリガーできます。この投稿を確認することもできます: jsTreeノードの選択を防ぐ