Загрузите jsTree и щелкните

#javascript #jquery #jstree

#javascript #jquery #jstree

Вопрос:

У меня есть два вопроса относительно jsTree:

  1. Я генерирую jsTree, используя JSON с struts2. В первый раз дерево отображается правильно. Но при нажатии кнопки я хочу перезагрузить это дерево с другими данными в тот же div. При нажатии кнопки я даю то же имя действия, которое присваивается при первом создании jstree.

  2. Если я нажимаю на любой узел дерева, то мне нужен идентификатор этого узла, и если у этого узла есть какой-либо родительский узел, то также нужен идентификатор родительского узла этого узла, опять же родительский узел имеет parent, затем id этого родительского узла также

Пример

     Parent 1
       |__Parent 2
            |__Child 1
  

Я нажимаю на дочерний элемент 1, затем мне нужен идентификатор дочернего элемента 1, родительского элемента 2, родительского элемента 1 и так далее.

Ответ №1:

Я не уверен, действительно ли вы просматривали документацию, но вот некоторые материалы, которые могли бы вам помочь :

для вашего первого вопроса вы можете использовать откат : http://luban.danse.us/jazzclub/javascripts/jquery/jsTree/reference/_examples/5_others.html Обновление тоже может быть опцией: http://luban.danse.us/jazzclub/javascripts/jquery/jsTree/reference/_examples/2_operations.html

Для вашего второго вопроса вы можете использовать обратные вызовы : http://luban.danse.us/jazzclub/javascripts/jquery/jsTree/reference/_examples/3_callbacks.html

._get_parent вам тоже поможет :

._get_parent (узел)

Возвращает элемент LI, представляющий родительский элемент переданного узла. Возвращает false при сбое. смешанный узел

Это может быть узел DOM, узел jQuery или селектор, указывающий на элемент в дереве, родительский элемент которого мы хотим.

Смотрите полную документацию для получения более подробной информации: http://www.jstree.com/documentation/core

Ответ №2:

Если вы хотите получить полный путь к вашему узлу, вы можете использовать get_path

 // The true means it will return the ID's of the parent, therefore ALL NODES need an ID
var parents = $("#your_jstree").jstree("get_path",$("#the_node"),true); 
$.each(parents, function(k, v){
    // Log down the ID's
    console.log(v);
});
  

Полный пример

 var ids = $(this).closest(".jstree").jstree("get_path", $(this), true);
var path = "";
$.each(ids, function (k, v) {
    if (k == 0) return;

    if (path != "")
        path  = "/";

    path  = clone.html();
});
  

Вернет / parent 1/parent 2/ Child 1