如何解决Jstree-仅允许一次在所有Jstree中检查一个节点
我有一个用数据填充的jstree,我只想限制用户只检查所有jstree中的一个节点,而当检查另一个时,请取消选中第一个节点,然后再检查另一个节点。
多个复选框属性为false无效。我的复选框插件的配置如下:
'checkbox': {
'whole_node': false,'tie_selection': false,'multiple': false,'three_state': false,'cascade': 'down'
},
谢谢。
解决方法
想要限制用户仅检查所有jstree中的一个节点,而当检查另一个时,取消选中第一个节点,然后检查另一个。
要达到上述要求,您可以参考以下代码段。
隐藏根节点的复选框
<style>
.jstree li.jstree-open > a.jstree-anchor > i.jstree-checkbox,.jstree li.jstree-closed > a.jstree-anchor > i.jstree-checkbox {
display: none;
}
</style>
HTML代码
<div id="tree">
<ul>
<li id="pnode_1">
ParentNode 1
<ul>
<li id="child1_1">ChildNode 1</li>
<li id="child1_2">ChildNode 2</li>
</ul>
</li>
<li id="pnode_2">
ParentNode 2
<ul>
<li id="child2_1">ChildNode 1</li>
<li id="child2_2">ChildNode 2</li>
<li id="child2_3">ChildNode 3</li>
</ul>
</li>
</ul>
</div>
JS代码
<script src="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.2.1/jstree.min.js"></script>
<script>
$(function () {
var Tree = $("#tree").jstree({
'checkbox': {
'whole_node': false,'tie_selection': false,'keep_selected_style': false,'cascade': 'down'
},"plugins": ["checkbox"]
});
//overwrite default behaviour of check_node function
Tree.on("check_node.jstree",function (e,data) {
var selectedNodes = $("#tree").jstree().get_checked();
console.log(selectedNodes);
console.log(data.node.id);
if (selectedNodes.length > 1) {
$("#tree").jstree().uncheck_node(selectedNodes[0]);
}
});
});
</script>
测试结果
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。