如何让点击选中的FancyTree节点再次激活?

Ale*_*err 2 fancytree

如果我单击 fancytree 菜单节点,它们会激活菜单旁边出现的对话框。它们具有使对话框关闭的取消按钮。但是,当我再次单击相同的菜单项(节点)时,相同的对话框不会再次出现(正如我想要的那样),我认为因为 Fancytree 认为它是当前选定的节点,所以忽略它。

如果我单击另一个菜单项,它会正常工作并且会出现该菜单项的对话框。那么,如何让 Fancytreeactivate:在再次单击当前选定的菜单项时触发相同的功能呢?

在我的取消按钮处理程序中,我尝试使用node.setSelected(false)它来取消选择该项目,但当我再次单击同一项目时,该对话框仍然不会重新出现。我已经确认它是使用 setSelected(false) 的正确(当前)节点。

我只是使用标准 fancytree 配置,例如以下内容:

var currentMenuItemNode;

$("#tree").fancytree({
    activate: function(event, data){
        this.currentMenuItemNode = data.node;
    }
});

cancelButtonHandler() {
  // Close dialog box here

  this.currentMenuItemNode.setSelected(false); // Deselect item
}
Run Code Online (Sandbox Code Playgroud)

任何想法欢迎!

mar*_*r10 6

activate如果节点已经处于活动状态,则不会触发该事件,因此单击事件可能就是您正在寻找的:

$("#tree").fancytree({
  [...]
  click: function(event, data) {
    var node = data.node,
        // Only for click and dblclick events:
        // 'title' | 'prefix' | 'expander' | 'checkbox' | 'icon'
        targetType = data.targetType;

    // we could return false to prevent default handling, i.e. generating
    // activate, expand, or select events
  },
});
Run Code Online (Sandbox Code Playgroud)