如何响应用户扩展节点?

how to respond to user expanding a node?

我猜答案是 expand - 但 expand 事件似乎没有触发。

但让我从头说起:我有一棵漂亮的树,我想使用 jBox 来显示有关某些节点的信息。我注意到这仅适用于创建树时可见的节点,但不适用于折叠节点下的节点。所以我想我可以使用 expand 并分配一个将调用 jBox 的事件处理程序来创建工具提示。但它没有用。我向 `expand-handler 添加了一个 console.log 并注意到它从未记录过。 我指定的不正确吗?

Fiddlehere。 "SD"-Node 中有一些项目应该有一个工具提示附加到 (i)-icon。

它不会触发,因为你传递的是一个字符串:

"expand": "function(event, data) {...}"

您需要去掉双引号,使其成为一个函数:

"expand": function(event, data) {...}

查看更新 fiddle:http://jsfiddle.net/pgh52m4w/3/

对于事件 "dblclick" 也是如此。也删除那里的双引号。

此外,鼓励在附加 jBox 时使用 .attach() 方法。 attach 方法将检查此 jBox 是否已附加到元素,如果没有则仅附加它。

查看更新后的 fiddle。我为工具提示创建了一个变量并在展开事件中重新附加它:

$(function() {
  var treei = $("#tree").fancytree({
    expand: function () {
      myTooltip && myTooltip.attach(); // Reattaching Tooltip
    }
    // ...
  });
  var myTooltip = new jBox("Tooltip", { // get tooltips showing
    attach: '[data-jbox-content]',
    getTitle: "data-jbox-title",
    getContent: "data-jbox-content"
  });
});