я загружаю свое jsTree через json_data всякий раз, когда пользователь нажимает [+] рядом с папкой. Что я хочу сделать, так это применить классы css к некоторым узлам, чтобы выделить их для пользователя. Не говоря уже о наведении курсора мыши или текущем выбранном узле, но о нескольких узлах, которые некоторые люди должны просмотреть позже. Соответствующий класс css уже находится внутри ответа JSON от сервера:
[
{"attr":{"id":"node_5","rel":"document","page_id":"4"},"data":"Test123","csscl":"ui-state-error","state":""},
{"attr":{"id":"node_6","rel":"folder","page_id":"6"},"data":"Services","csscl":"","state":"closed"}
]
мой узел «Test123» должен получить класс «ui-state-error» позже в дереве. Вот мой jsTree:
$(function () {
// Settings up the tree. note to self: dont use the cookie plugin here, this will always overwrite pre-selected nodes
$("#jstree").jstree({
"plugins" : [ "themes", "json_data", "ui", "types", "hotkeys",],
"json_data" : {
"ajax" : {
"url" : "inc/tree_server.php",
"data" : function (n) {
return {
"operation" : "get_children",
"id" : n.attr ? n.attr("id").replace("node_","") : 1
};
},
success: function(n) {
for (var i in n)
{
jqid = "#"+n[i].attr["id"]+" a";
$(jqid).addClass(n[i].csscl);
}
}
}
},
// the UI plugin
"ui" : {
// selected onload
"initially_select" : [ "node_<?=$p->oTopic->iId;?>" ]
},
// the core plugin
"core" : {
"initially_open" : [ <?=$p->oTopic->sJstreeOpenSeq;?> ],
"animation" : 0
}
})
Это не сработает. Я думаю, что происходит то, что «успех: функция (n)» вызывается после загрузки дерева, но до того, как оно будет нарисовано или готово для JQuery, чтобы найти выбранный узел и применить мой класс. Кто-нибудь знает, как это решить, или, может быть, в этом случае есть лучший способ применить класс css к $("#node5 a")...?