fancytree изменяет цвет подсветки текущего выбранного элемента в режиме выбора 3

#jquery #treeview #hierarchy #fancytree #dynatree

#jquery #просмотр дерева #иерархия #fancytree #dynatree

Вопрос:

Я использую fancytree selectMode 3 таким образом, чтобы родительский элемент также получал флажок, а конечный пользователь знал о состоянии навигации (508 вещь). Проблема, с которой я сталкиваюсь при выделении узла с помощью навигации по клавиатуре: если в папке есть 2 или более дочерних элемента, цвет выделения остается неизменным во время навигации по клавиатуре и затрудняет определение того, на каком узле в данный момент находится пользователь.
См. скриншот ниже: введите описание изображения здесь

Ссылка на Codepen:
https://codepen.io/cksachdev/pen/YMxqGO?editors=1011

Фрагмент кода из codepen:

 keydown: function(event, data) {
    switch (event.which) {
      case 32: // [space]
        data.node.toggleSelected();
        break;
      case 13: // [enter]
        data.node.toggleSelected();
        break;
      case 40:
      case 38:
      case 37:
      case 39:
        // Change the background to show a different highlight
        // highlightNode(data);
        break;
    }
  }
});

function highlightNode(data) {
  var node = data.node;
  if (node.data) {
    var $span = jQuery(node.span);
    $span
      .find("span.fancytree-title")
      .text(node.title)
      .css({
        background: "red"
      });
  }
}
  

Я попытался установить цвет выделения, определив клавиши со стрелками влево, вправо, вверх и вниз на клавиатуре, но не дает желаемого результата. Фон применяется после посещения узла с помощью навигации с клавиатуры.

Я попытался найти событие before, чтобы я мог получить ссылку как на предыдущий узел, так и на следующий узел, а затем сбросить стиль на предыдущем узле и применить новый стиль следующего узла.

Любые предложения.

Ответ №1:

Я бы предложил просто добавить пользовательское правило CSS, например:

 .fancytree-plain span.fancytree-active span.fancytree-title,
.fancytree-plain.fancytree-treefocus.fancytree-container span.fancytree-active pan.fancytree-title{
    background-color: #0d0;
    border-color: #080;
}
  

(Что касается раздела 508: Fancytree уже поддерживает WAI-ARIA.)

Комментарии:

1. Спасибо, mar10. Когда selectMode равен 3, цвет фона остается неизменным, поэтому трудно определить, на каком узле находится пользователь, поэтому это должно быть при наведении курсора, как событие.