取消选择所选的treenode JStree - jquery

时间:2014-02-27 14:40:11

标签: jquery html jstree

场合

当我的页面加载并且我的树视图是可见的时,没有选择treenode。 当我点击一个节点时,它被选中,这是默认行为。

问题

如何在单击同一节点时取消选择节点?所以我想点击一个选定的节点取消选择它。我一直在搜索文档。但事件'select_node'将首先选择节点,然后才能检查它的selectstatus。

我知道有一种方法可以在单击按钮时取消选择带代码的节点,但这不是我想要的。我想点击已经选择的节点。

有人可以帮助我吗?

链接(S)

文档事件JStree:http://www.jstree.com/api/#/?q=.jstree%20Event&f=enable_node.jstree

3 个答案:

答案 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) {
  ...
});