Я загружаю свое 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
}
})
Это не сработает. Что я думаю, так это то, что «success: function (n)» вызывается после загрузки дерева, но до его отрисовки или готовности к JQuery, чтобы найти выбранный узел и применить мой класс.
Любой знает, как решить эту проблему, или, может быть, есть лучший способ применить класс css к $ ("# node5 a") в этом случае ...?