情况
当我的页面加载并且我的树视图是可见的时,没有选择treenode。
当我点击一个节点时,它被选中,这是默认行为。
题
如何在单击同一节点时取消选择节点?所以我想点击一个选定的节点取消选择它。我一直在搜索文档。但事件'select_node'将首先选择节点,然后才能检查它的selectstatus。
我知道有一种方法可以在单击按钮时取消选择带代码的节点,但这不是我想要的。我想单击已选择的节点。
有人能帮我吗?
链接)
文档事件JStree: http://www.jstree.com/api/#/?q=.jstree%20Event&f=enable_node.jstree
今天突然出现了这个问题。我预计至少可以在初始化树时设置一个配置选项。虽然它不漂亮,但这是我为避免这个问题所做的:
var _selectedNodeId;
$("#myTree").on("select_node.jstree", function (e, _data) {
if ( _selectedNodeId === _data.node.id ) {
_data.instance.deselect_node(_data.node);
_selectedNodeId = "";
} else {
_selectedNodeId = _data.node.id;
}
}).jstree();
本质上,我正在跟踪所选节点并针对已单击的节点进行检查。这种方法的缺点是,如果你在“changed.jstree”上有一个回调触发,它将触发两次,因为你先“选择”然后“取消选择”,如果它已被选中。
我找到了一种通过添加来启用此行为的方法 multiselect
插入。并设置 multiple
配置选项 false
当你想要单选时:
$('#my-tree').jstree({
core: { multiple: false },
plugins: ['multiselect']
})