In any case, you need to search the tree, so just remember the parent and return him if you find the right child.
I mumbled something: http://jsfiddle.net/jftrg9ko/1/
function getParent(tree, childNode) { var i, res; if (!tree || !tree.folder) { return null; } if( Object.prototype.toString.call(tree.folder) === '[object Array]' ) { for (i in tree.folder) { if (tree.folder[i].id === childNode) { return tree; } res = getParent(tree.folder[i], childNode); if (res) { return res; } } return null; } else { if (tree.folder.id === childNode) { return tree; } return getParent(tree.folder, childNode); } }
source share