아래와 같이 select_node
및 deselect_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);
}
};
을하지만 이상적인 방법은? select_node는 check_node와 다릅니다. select_node에 별도의 기능이 있다면, 즉 노드를 선택할 때 뭔가 수행해야하며 check_node는 다른 작업을 수행해야합니다. –
별도로 가지고 싶으면 노드를 선택/선택 해제 한 후에 노드를 수동으로 선택/선택 해제해야합니다. 그리고 체크 박스 플러그인에서 노드를 선택하지 않도록 설정을 지정해야합니다. config - 내 대답과 데모를 업데이트했습니다. –
감사합니다. 함수를 호출하기 위해 매개 변수를 실수로 사용하고있는 것으로 나타났습니다. on ("uncheck_node.jstree", function (e, data)) { subfunction (data.node.id); } // 함수를 호출합니다. –