2012-08-13 1 views
2

jstree 라이브러리를 사용하고 있습니다. 아주 멋진 라이브러리이지만 한 가지 문제가 있습니다. 컨텍스트 메뉴의 콜백이 작동하지 않습니다. JsTree 컨텍스트 메뉴 콜백 함수가 실행되지 않음

나는 작은 동작하는 예제를 만들어 - 당신이 아무 일도 일어나지 않는다/제거 노드 이름을 바꿀 수 있지만, 추가/경고를 제공해야합니다 ..

사람이 왜 알고 있나요과 해결책은 무엇인가?

당신은 온라인 예를 작동하지 working-을 볼 수 있습니다 여기 http://www.leermetstrips.nl/Content/tree.htm

또는를 : jstree 핵심 functionallity을에는 callback 속성이 없습니다

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

. 그래서 제거 :

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

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 이벤트를 바인드해야