16

Is there a way to clear out all nodes from a jsTree that's faster than walking through all the nodes deleting them one-by-one?

Jeff Dege
  • 11,190
  • 22
  • 96
  • 165

7 Answers7

13
$('#tree').jstree("destroy").empty();

This is what worked for me. First destroy jstree elements and associated events, and then empty the div containing jstree.

user602599
  • 661
  • 11
  • 22
13

The simplest way I have found is to simply call .empty on the div containing the tree.

$('#tree').empty();

You might choose to use a more specific selector as a parameter for empty(), but this works fine for me.

Brad
  • 159,648
  • 54
  • 349
  • 530
11

See the documentation here: http://www.jstree.com/documentation/core

.delete_node ( node )

Removes a node. Triggers an event.

mixed node

This can be a DOM node, jQuery node or selector pointing to the element you want to remove.

It seems you can just do a selector that will delete all the nodes you want, no loops required.

Adam Terlson
  • 12,610
  • 4
  • 42
  • 63
2
myTree.delete_node(myTree.get_node("#").children);
Dharman
  • 30,962
  • 25
  • 85
  • 135
1

Call .remove(node) on the root nodes.

mikerobi
  • 20,527
  • 5
  • 46
  • 42
0
$('#jstree').parent().html('<div id="#jstree"></div>');
Ravi Khambhati
  • 637
  • 1
  • 12
  • 35
0

The following call will destroy the current instance of jsTree, remove any bound event listeners and obviously achieve your ultimate goal of removing all nodes. But this method is a bit of a over-kill, it has to be said.

$("#DivElementContainingYourTree").jstree("init");
dnshio
  • 914
  • 1
  • 8
  • 21