Как включить контекстное меню jsTree только для узлов, которые находятся за пределами уровня 2?

#javascript #jquery #jstree

#javascript #jquery #jstree

Вопрос:

Итак, моя проблема в том, что мне нужно иметь контекстное меню только для узлов моего дерева, которые вложены после 2-го уровня или глубже. Например :

введите описание изображения здесь

Я хочу иметь контекстное меню по умолчанию для узлов «1.1.1», «1.1.1.1» и т.д… но я не хочу, чтобы это контекстное меню появлялось, когда я щелкаю правой кнопкой мыши на «1» или «1.1».

Как я должен выбирать, на каких узлах отображаться, а на каких нет?

Я нашел несколько примеров, подобных этому :

 function customMenu(node) {
   //Show a different label for renaming files and folders
   if ($(node).hasClass("jstree-closed") || $(node).hasClass("jstree-open")) { //If node is a folder
      var renameLabel = "Rename Folder";
   }
   else {
      var renameLabel = "Rename File";
   }
   var items = {
      "upload" : {
          "label" : "Upload File",
          "action" : function () { ... }
      },
      "rename" : {
         "label" : renameLabel,   //Different label (defined above) will be shown depending on node type
         "action" : function () { ... }
      },
      "delete" : {
         "label" : "Delete File",
         "action" : function () { ... }
      }
   };

   //If node is a folder do not show the "delete" menu item
   if ($(node).hasClass("jstree-closed") || $(node).hasClass("jstree-open")) {
      delete items.remove;
   }

   return items;
}
  

Мне нужно что-то вроде этого, но я не знаю, как проверить, на каком уровне вложена моя папка. Проверки в моем примере относятся к «папке или файлу».

Кто-нибудь знает?

Ответ №1:

Я не думаю, что у jsTree есть для этого готовый метод, поэтому вы можете отключить отображение меню для узлов на уровне 1 и 2 с помощью кода, как показано ниже. Проверьте демонстрацию — демонстрацию скрипки.

 .on('show_contextmenu.jstree', function(e, reference, element) {

    if ( reference.node.parents.length < 3 ) {
        $('.vakata-context').remove();
    }

});