场合
当我的页面加载并且我的树视图是可见的时,没有选择treenode。 当我点击一个节点时,它被选中,这是默认行为。
问题
如何在单击同一节点时取消选择节点?所以我想点击一个选定的节点取消选择它。我一直在搜索文档。但事件'select_node'将首先选择节点,然后才能检查它的selectstatus。
我知道有一种方法可以在单击按钮时取消选择带代码的节点,但这不是我想要的。我想点击已经选择的节点。
有人可以帮助我吗?
链接(S)
文档事件JStree:http://www.jstree.com/api/#/?q=.jstree%20Event&f=enable_node.jstree
答案 0 :(得分:10)
今天突然出现了这个问题。我预计至少可以在初始化树时设置一个配置选项。虽然它并不漂亮,但我这样做是为了规避这个问题:
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"它会发射两次,因为你正在选择"首先然后"取消选择"如果它已被选中。
答案 1 :(得分:0)
我找到了一种通过添加val b = Array(1L, 2L, 3L)
quickSort(b)(Ordering[Long].reverse)
println(b.toVector) // Vector(3, 2, 1)
插件来启用此行为的方法。如果您想要单一选择,请将multiselect
配置选项设置为multiple
:
false
答案 2 :(得分:0)
要在单击时取消选择选定的节点。
$('#my-tree').('click', '.jstree-clicked', function () {
$('#my-tree').(true).deselect_node(this);
});
还可以在取消选择时添加侦听器。
$("#myTree").on("deselect_node.jstree", function (e, data) {
...
});