【问题标题】:How to get click on selected FancyTree node to activate again?如何点击选定的 FancyTree 节点再次激活?
【发布时间】:2019-10-26 18:00:29
【问题描述】:

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

如果我点击不同的菜单项,它会正常工作,并且会出现该菜单项的对话框。那么,当再次单击当前选定的菜单项时,如何让 Fancytree 触发相同的 activate: 函数?

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

我只是使用标准的花式树配置,例如以下:

var currentMenuItemNode;

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

cancelButtonHandler() {
  // Close dialog box here

  this.currentMenuItemNode.setSelected(false); // Deselect item
}

欢迎任何想法!

【问题讨论】:

    标签: fancytree


    【解决方案1】:

    如果节点已经处于活动状态,则不会触发 activate 事件,因此 click event 可能就是您要查找的内容:

    $("#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
      },
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-20
      • 1970-01-01
      • 1970-01-01
      • 2017-09-24
      • 2021-09-30
      • 2010-09-25
      • 2016-01-14
      相关资源
      最近更新 更多