dudeonthehorse
@dudeonthehorse
Email Developer

Как получить выделенные узлы из дерева JsTree?

Гугл выдает множество вариантов, но некоторые вовсе не решают проблему, другие частично. Родная функция для получения списка выделенных узлов не подходит, т.к. отдает одноуровневый массив айдишников.

Мне же необходимо соблюсти вложенность. Моя реализация выглядит так — jsfiddle.net/DrqRu/

Функцию вызываю по событию .on. На статичном дереве все хорошо. А вот в проекте дерево динамичное. Новые узлы подгружаются аяксом при открытии узла.


И вот тут картина следующая:


1. Корневой узел свернут. Открываю всех его детей. Они подгрузились аяксом. Выделяю чекбоксом корневой, выделяются все дети. Отправляю дерево на экспорт. Мой массив выглядит так как мне нужно.


2. Корневой узел свернут. Выделяю его чекбоксом. Запускается функция $(tree).jstree("open_all",'отмеченный узел');, которая раскрывает всех детей(подгружает аяксом). Затем все открытые дети выделяются автоматически(так как был выделен их предок). Жму на экспорт. Подгруженные(и в то же время выделенные) дети не пошли в массив.


Что я делаю не так?
  • Вопрос задан
  • 5177 просмотров
Пригласить эксперта
Ответы на вопрос 2
kuzemchik
@kuzemchik
Была задачка копирования куска дерева из одного дерева в другое. Не уверен как выдрать =/
Ответ написан
kuzemchik
@kuzemchik
что-то вроде
	function recursive_simplify(node){
		if(node.children){
			for(var i =0;i<node.children.length;i++){
				node.children[i] = recursive_simplify(node.children[i])
			}
		}
		return {id:node.attr.id,children:node.children}
	}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы