Javascript (JsTree): как ссылаться на подэлементы узлов дерева - PullRequest
1 голос
/ 05 сентября 2011

Привет, я работаю над проектом Symfony, и мне нужна структура JsTree для представления иерархий из базы данных. Я объявляю структуру <ul> & <li>, определенную библиотекой JsTree, правильно. У каждого <li> есть свой id = идентификатор соответствующего элемента в базе данных, я поставил <a> с его href=[the url i need to use when click]. Тогда я использую следующую функцию:

$("#myTree").bind("select_node.jstree",function(event,data){
    if(data.rslt.obj.attr("id")!=0){
        window.location = "myModule/myAction?id="+data.rslt.obj.attr("id");
    }
});

Проблема в том, что ссылка не работает должным образом. Когда я нажимаю, window.location добавляет "myModule / myAction? Id =" + "выбранный идентификатор" в конце маршрута.

Когда я пытаюсь указать более сложный способ указания нового маршрута, например window.location = <?php echo url_for("myModule/myAction")?>+"/id/"+data.rslt.obj.attr("id");, представление дерева не удается: оно не отображается как дерево, просто как список.

Я думаю, что было бы возможно, если бы был какой-то способ сделать что-то подобное: window.location = data.rslt.obj.attr("id").subelement("a").attr("href"); тогда я смогу получить доступ к информации, содержащейся в поле <li>.

Большое спасибо за ваше время.

Ответы [ 2 ]

0 голосов
/ 12 сентября 2011

Я наконец нашел ответ.Существует функция с именем childNodes, которая возвращает все подэлементы объекта.Я использовал код ниже:

var id = data.rslt.obj.attr("id");

var child = document.getElementById(id).childNodes[1].firstChild;

см. Документацию: childNodes doc

0 голосов
/ 09 сентября 2011

если вы можете найти идентификатор

, вы можете получить его значение как

var id = data.rslt.obj.attr ("id");

$( "#" + идентификатор) .val ();

...