J'ai du code dans lequel j'ai besoin de la possibilité d'ajouter des nœuds d'enfants à un jstree qui contiennent eux-mêmes des enfants. Le code ci-dessous ajoute un nœud «Child2» correctement à «Child1» mais ignore les données de l'enfant3. Toute aide beaucoup appréciée. Le code suit:
<html> <head> <script type="text/javascript" src="http://static.jstree.com/v.1.0rc2/jquery.js"></script> <script type="text/javascript" src="http://static.jstree.com/v.1.0rc2/jquery.jstree.js"></script> <script type="text/javascript"> $(document).ready(function() { $(function () { $("#tree").jstree({ "json_data" : { "data" : [ { "data" : "parent", "attr" : { "id" : "root.id" }, "children" : [ { "data" : "child1", "attr" : { "id" : "child1.id" }, "children" : [ ] } ] }, ] }, "plugins" : [ "themes", "json_data", "crrm" ] }); }); $("#add").click(function() { $("#tree").jstree("create", $("#child1\\.id"), "inside", { "data" : "child2", "attr" : { "id" : "child2.id" }, "children" : [ { "data" : "child3", "attr" : { "id" : "child3.id" }, "children": [ ] } ] }, function() { alert("added"); }, true); }); }); </script> </head> <body> <div id="tree" name="tree"></div> <input type="button" id="add" value="add" /> </body> </html>
3 Réponses :
Autant que je puisse voir à partir de la source, la fonction "Créer" ne prend pas en charge la création d'un arbre à plusieurs niveaux à la fois. La méthode appelée appelée n'utilise pas et vérifie l'attribut enfants code> sur les données transmises. P>
Vous devez le faire vous-même, quelque chose comme ça:
Tout d'abord, ce n'est pas valide JSON avec la dernière virgule à l'intérieur du dernier support. Prenez cela:
/** * inserts a new node (json object returned from url) into an existing node (parentNodeId), for the div ud in jsTreeName which is * an instanced jstree. * @param string jsTreeName {name of an instanced tree} * @param string url {returns json} * @param string parentNodeId {string of the parent node id} */ function insertUrlIntoNode(jsTreeName, url, parentNodeId) { var nodeTree = getSynchronousJson(url); var tree = $('#'+jsTreeName).jstree(true); tree.deselect_all(); var sel = tree.create_node(parentNodeId, nodeTree); //tree.deselect_all(); //tree.select_node(sel); //optionally you could select the new node after insersion }
Peut-être que ce n'est pas possible? Je présumerais que la fonction Create a été mise en œuvre pour recourir sur les enfants, mais peut-être pas ... va jeter un coup d'œil à la source ...
J'ai eu le même problème comment pourriez-vous résoudre?