2017-01-31 3 views
0

JStree에서 노드를 선택/선택 해제 할 때마다 재귀 조치를 수행해야합니다. 다음을 시도했지만 함수가 호출되지 않습니다. JStree에서 노드를 체크/체크 해제하는 함수를 어떻게 호출해야합니까?JStree에서 노드가 선택/선택 해제되었을 때 함수를 호출 할 수 없습니다.

$('#jstree').on("uncheck_node.jstree", function (e, data) 
{ 
subfunction(selectednodetouncheck, data); 
}; 

function subfunction(para1, para2) 
{ 
//some operation; 
}; 

하위 함수가 호출되지 않습니다 ....이 함수를 호출하는 방법을 알려주세요.

답변

0

아래와 같이 select_nodedeselect_node을 사용해야합니다. 노드를 개별적으로 선택하여 선택하려면 트리 구성에서 checkbox 플러그인의 param을 false로 설정하고 노드를 수동으로 선택/선택 취소해야합니다.

확인 데모 - Fiddle Demo

$("#jstree") 
    .jstree({ 
     core: { 
      data: coredata, 
      check_callback: true 
     }, 
     plugins: ["checkbox"], 
     checkbox: { 
      tie_selection: false 
     } 
    }) 
    .on("select_node.jstree deselect_node.jstree", function(e, data) { 
     subfunction(data); 
    }) 
    .on("check_node.jstree uncheck_node.jstree", function(e, data) { 
     subfunction2(data); 
    }); 

function subfunction(data) { 
    //some operation; 
    alert('You got me selected: ' + data.node.state.selected) 
}; 

function subfunction2(data) { 
    //some operation; 
    alert('You got me checked: ' + data.node.state.checked); 

    // now you need to decide what you want to select or not 
    // and do it manually, e.g. like below 
    var selectFlag = true; 

    if (selectFlag) { 
     var action = data.node.state.checked ? 'select_node' : 'deselect_node'; 
     $("#jstree").jstree(action, data.node); 
    } 

}; 
+0

을하지만 이상적인 방법은? select_node는 check_node와 다릅니다. select_node에 별도의 기능이 있다면, 즉 노드를 선택할 때 뭔가 수행해야하며 check_node는 다른 작업을 수행해야합니다. –

+0

별도로 가지고 싶으면 노드를 선택/선택 해제 한 후에 노드를 수동으로 선택/선택 해제해야합니다. 그리고 체크 박스 플러그인에서 노드를 선택하지 않도록 설정을 지정해야합니다. config - 내 대답과 데모를 업데이트했습니다. –

+0

감사합니다. 함수를 호출하기 위해 매개 변수를 실수로 사용하고있는 것으로 나타났습니다. on ("uncheck_node.jstree", function (e, data)) { subfunction (data.node.id); } // 함수를 호출합니다. –