2012-08-13 73 views
2

我正在使用jstree库。一个非常好的图书馆,但我坚持一个问题。 contextmenu的回调不起作用。JsTree contextmenu回调函数没有触发

我做了一个小的工作示例 - 它应该会在您添加/删除/重命名节点,但什么也没发生警报..

有谁知道为什么不和该如何解决?

你可以看到working-不灵例如在线: http://www.leermetstrips.nl/Content/tree.htm

或者在这里:

<!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> 

回答

3

有一个在jstree核心functionallity没有callback财产。 所以删除此:

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'); 
     } 
    } 

您需要jstree事件这样绑定jstree对象之外:

$('#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'); 
});