Reputation: 680
I am using the jstree library. A very nice library but I am stuck with one problem. The callbacks of the contextmenu do not work.
I made a small working example - it should give an alert when you add / remove / rename nodes, but nothing happens..
Does anyone know why not and what is the solution?
You can see the working- not working example online: http://www.leermetstrips.nl/Content/tree.htm
Or here:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>JS tree example</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="http://code.jquery.com/jquery-1.8.0.js"></script>
<script src="http://cachedcommons.org/cache/jquery-jstree/1.0.0/javascripts/jquery-jstree.js" type="text/javascript"> </script>
<script type="text/javascript">
$().ready( function() {
var data = [{"data":"Root node","children":[{"data":"node one","children":[],"metadata":[{"action":"action12"}]}],"metadata":[{"action":"action11"}]}];
$('#tree').jstree(
{
json_data: { data: data },
plugins: ["themes", "json_data", "ui", "contextmenu", "crrm"],
// TODO: this does not work, why?
callback: {
oncreate: function (NODE, REF_NODE, TYPE, TREE_OBJ, RB) {
alert('oncreate');
},
onrename: function (NODE, LANG, TREE_OBJ, RB) {
alert('onrename');
},
ondelete: function (NODE, TREE_OBJ, RB) {
alert('ondelete');
}
}
}
);
});
</script>
</head>
<body>
<h3>JS tree example</h3>
<p>When adding, or deleting new nodes, there should be an alert. But there is none. Why?</p>
<div id="tree" style="border:1px solid;"></div>
<p>Click on the tree with your right mouse button to add, rename or delete NEW tree nodes.</p>
</body>
</html>
Upvotes: 2
Views: 2898
Reputation: 2272
There is no callback
property in jstree core functionallity.
So remove this:
callback: {
oncreate: function (NODE, REF_NODE, TYPE, TREE_OBJ, RB) {
alert('oncreate');
},
onrename: function (NODE, LANG, TREE_OBJ, RB) {
alert('onrename');
},
ondelete: function (NODE, TREE_OBJ, RB) {
alert('ondelete');
}
}
You need to bind jstree events outside the jstree object this way:
$('#tree').bind('create.jstree',function (node, ref) {
alert('oncreate');
});
$('#tree').bind('rename.jstree',function (node, ref) {
alert('onrename');
});
$('#tree').bind('remove.jstree',function (node, ref) {
alert('ondelete');
});
Upvotes: 5