В моем jstree используется jstree-grid, и один из столбцов содержит меню действий (которое генерируется отдельным кодом, и все, что мне нужно сделать, это применить класс "actionHandler" для генерации меню во время выполнения). Это меню действий состоит из нескольких дополнительных div, ul и li, которые в значительной степени заглушают событие click в HTML-коде.
Что я хочу сделать, это следующее:
Когда выбран вариант admin_new (представляющий «новый узел»), я хочу иметь возможность получить идентификатор узла, для которого было выбрано сгенерированное меню, чтобы добавить этот узел в качестве дочернего для текущего узла .
Это мой текущий код:
jQuery("#structureBuilderTable").jstree({
json_data: {data: testData},
themes: {
theme : "apple",
dots : false,
icons : false
},
plugins: ["json_data", "crrm", "ui", "themes", "grid"],
core: {initially_open: [1]},
grid : {
columns: [
{width: 200, header: "Title"},
{value:"id", width: 50, header: "id"},
{value:"logicalTitle", width: 50, header:"logical title"},
{width: 100, header:"handlinger", cellClass:'actionHandler'},
{value:"resource", width: 200, header:"resource"}
]
}
}).bind("loaded_grid.jstree", function()
{
generateActionMenu("span.actionHandler",{
admin_new: function(e){
var nodeID = $(e.target).parents(/* Need an unique property*/).data('id');
},
admin_delete: function(e){
/* delete node*/
}, 'admin_open');
});
А это мой дурачок JSON:
var testData = [
{
data: "Seksjon1",
attr: {id:"1", logicalTitle:"r2d2", resource:"videofile"},
children: [
{
data: "Flersvar",
attr: {id:"2", logicalTitle:"c3p0", resource:"checkbox"}
},
{
data: "Flashtest",
attr: {id:"3", logicalTitle:"d2r2", resource:"flash"}
}
]
}];
Основная проблема заключается в том, что, поскольку ни один узел не выбран, у меня нет доступа к каким-либо конкретным событиям jstree (предоставляя доступ к объекту данных, который мог бы потенциально решить проблему).
Итак, вопрос в основном: как я могу получить информацию о соответствующем узле без непосредственного манипулирования деревом?
Любая помощь будет очень высоко ценится! (Простите за стену текста: р)