我想从我的 jstree 中获取 2 个单独数组中的已检查节点和未检查节点。
我看过 .get_checked
和 .get_unchecked
函数,但它们会向我返回当前已检查和未检查的所有节点。 (即,如果一个节点未被选中,而我没有取消选中它,那么我仍然使用 .get_unchecked
获取它。我想防止这种情况发生)。我也准备好对 api 进行重大更改。有什么方向吗?
我可以获取复选框的更改事件吗?我也尝试过 change_state
但它只适用于一个被点击的节点。
最佳答案
据我所知,如果不重写 jstree 的复选框插件,几乎不可能处理复选框的单个事件,因为它们只是在每个选中/取消选中事件上重绘所单击文件夹的所有父项和子项。
这里是简单的 demo :
一切都为我工作,
HTML
<div id="demo1" class="demo">
<ul>
<li id="phtml_1">
<a href="#">Root node 1</a>
<ul>
<li id="phtml_2" class="jstree-checked">
<a href="#">Child node 1</a>
</li>
<li id="phtml_3">
<a href="#">A Child node 2</a>
</li>
</ul>
</li>
<li id="phtml_4">
<a href="#">Root node 2</a>
<ul>
<li id="phtml_2" >
<a href="#">Child node 1</a>
</li>
<li id="phtml_3">
<a href="#">A Child node 2</a>
</li>
</ul>
</li>
</ul>
</div>
JS
$(function() {
var tree = $("#demo1").jstree({
"plugins": ["themes", "html_data", "checkbox", "sort", "ui"]
});
tree.bind("open_node.jstree close_node.jstree check_node.jstree uncheck_node.jstree", function(e) {
console.log("Event", e);
console.log('Cheked:', tree.jstree('get_checked'));
console.log('Uncheked:', tree.jstree('get_unchecked'));
});
});
关于javascript - jstree 获取已检查和未检查的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12928779/