как реагировать на расширение пользователем узла? - PullRequest
0 голосов
/ 08 июня 2018

Я думаю, что ответ expand - но событие expand, похоже, не срабатывает.

Но позвольте мне начать с самого начала: у меня хорошее дерево, и я бы хотелиспользуйте jBox для отображения информации об определенных узлах.Я заметил, что это работало только для узлов, которые были видны при создании дерева, но не работало для узлов в свернутых узлах.Поэтому я подумал, что могу использовать expand и назначить обработчик событий, который будет вызывать jBox для создания всплывающих подсказок.Но это не сработало.Я добавил console.log в обработчик расширения и заметил, что он никогда не регистрируется.Я указываю это неправильно?

Скрипка здесь .Узел "SD" содержит несколько элементов, к которым должна быть прикреплена всплывающая подсказка к значку (i).

1 Ответ

0 голосов
/ 08 июня 2018

Он не срабатывает, потому что вы передаете строку:

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

Вам необходимо удалить двойные кавычки, чтобы это была функция:

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

См. Обновленную скрипту: http://jsfiddle.net/pgh52m4w/3/

То же самое относится к событию "dblclick".Там тоже удалите двойные кавычки.

Также рекомендуется использовать метод .attach() при присоединении jBox.Метод присоединения проверит, был ли этот jBox уже прикреплен к элементу, и присоединит его, только если он не был.

См. Обновленную скрипку.Я создал переменную для всплывающей подсказки и заново прикрепил ее в событии расширения:

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