Подтвердить что ты не робот

Событие jsTree onSelect

Я пытаюсь получить текст node, который выбран в jsTree. Я могу заполнить дерево и вызвать событие onSelect, но я не могу узнать, какой из них был нажат node. Я видел примеры в сети, которые используют data.rslt.obj.attr("data") для извлечения текста, но это возвращает undefined для меня. Кроме того, когда я пытаюсь получить выбранный node с помощью .jstree('get_selected'), я не могу найти текст node в любом месте объекта. Как я могу получить текст node?

Вот моя функция обратного вызова onSelect:

function onSelect(event, data)
{
    // Get the name of the equipment that was selected.
    var selected_node = $("#equipment_tree").jstree('get_selected');
    var equipment_name = data.rslt.obj.attr("data");
}
4b9b3361

Ответ 1

Вы можете получить выбранный объект node и его текст:

$("#treeContainer").bind(
        "select_node.jstree", function(evt, data){
            //selected node object: data.inst.get_json()[0];
            //selected node text: data.inst.get_json()[0].data
        }
);

Ответ 2

Новая версия jstree для получения текста из node должна использовать data.node.text

$("#treeContainer").on("select_node.jstree",
     function(evt, data){
          alert(data.node.text);
     }
);

Ответ 3

$("#equipment_tree").bind("select_node.jstree", function(evt, data){

             var i, j, r = [], ids=[];
                for(i = 0, j = data.selected.length; i < j; i++) {
                  r.push(data.instance.get_node(data.selected[i]).text);
                }
                alert('Selected: ' + r.join(', '));
           }
);

вы должны попробовать это.

Ответ 4

В текущей версии лучше всего использовать get_selected с full: true, что означает, что метод вернет полный объект (ы), а не только id.

Итак, например:

$("#treeNode").jstree('get_selected', true);

или

$("#treeNode").jstree().get_selected(true);

Каждый элемент массива будет иметь все свойства как текст или идентификатор.

Ответ 5

Событие клика не передает никаких данных с ним, поэтому необходимо использовать объект события.

.bind("click.jstree", function (event) {
    alert($(event.currentTarget).parent("li:first").text().trim());
});