Я пытаюсь добавить новый узел в jQuery SimpleTree, но все, что я, кажется, могу получить, это «sTC.addNode не функция» ...
var simpleTreeCollection = $('.simpleTree').simpleTree({
animate:true,
drag:false,
autoclose: false,
afterClick:function(node){},
afterDblClick:function(node){},
beforeMove:function (destination, source, pos){},
afterMove:function(destination, source, pos){},
afterAjax:function() {},
afterContextMenu:function(node){}
});
simpleTreeCollection.addNode('test', 'test');
Есть предложения, что я делаю неправильно? Есть ли вообще возможность добавить узел?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


хм, это сложно, и я должен сказать, что мне не нравится этот плагин, поскольку он использует числа в качестве идентификаторов и состояний w3c: «Значение атрибута должно начинаться с буквы в диапазоне AZ или AZ и может сопровождаться буквами ...... . "
Однако, чтобы заставить вас работать, вам нужно сначала выбрать один из узлов, чтобы добавить к нему, как это
//Select first child node in tree
$('#2').click();
//Add new node to selected node
simpleTreeCollection.get(0).addNode(1,'A New Node')
Хм, не работает. Я получаю сообщение «узел [0] не определен» в jquery.simple.tree.js. Может это потому, что я не использую числовые идентификаторы ... Думаю, я попробую еще один плагин для дерева. вздох
Привет, BlaM, к сведению, приведенный выше код работает в консоли firebug на их демонстрационной странице.
К вашему сведению, приведенный выше код работает в консоли firebug на их демонстрационной странице. Убедитесь, что на вашем дереве вы используете правильный селектор, чтобы выделить узел.
Может взглянуть на jsTree
Я решил это, отредактировав функцию addNode. Я прокомментировал temp_node.remove (); и добавил dragNode_destination.after (dragNode_source);
Просто так:
TREE.addNode = function(id, text, callback)
{
var temp_node = $('<li><ul><li id = "'+id+'"><span>'+text+'</span></li></ul></li>');
TREE.setTreeNodes(temp_node);
dragNode_destination = TREE.getSelected();
dragNode_source = $('.doc-last',temp_node);
TREE.moveNodeToFolder(dragNode_destination);
// temp_node.remove();
dragNode_destination.after(dragNode_source);
if (typeof(callback) == 'function')
{
callback(dragNode_destination, dragNode_source);
}
};
У него есть хорошая функция "перетаскивания", хотя и с ней тоже нужно поработать (она слишком чувствительна, особенно при щелчке правой кнопкой мыши для контекстных меню) ... Я не думаю, что вам НУЖНО использовать чистый числовые идентификаторы ... По крайней мере, у меня их нет, и он работает ...