2014-02-27 1 views
10

상황은의 선택을 취소 선택의 TreeNode의 JStree - 내 페이지가로드 내 트 리뷰가 공개 대상입니다 때 JQuery와

, 더 TreeNode를 선택하지 않습니다. 노드를 클릭하면 기본 동작 인 노드가 선택됩니다. 동일한 노드에 클릭하는 동안

질문

어떻게 노드를 선택 해제 할 수 있습니까? 그래서 선택한 노드를 클릭하여 선택을 해제하고 싶습니다. 나는 문서를 조사하고있다. 그러나 'select_node'이벤트는 selectstatus를 확인하기 전에 먼저 노드를 선택합니다.

단추를 클릭 할 때 코드가있는 노드를 선택 취소하는 방법이 있지만 원하는 것은 아닙니다. 이미 선택된 노드를 클릭하고 싶습니다.

나를 도와 줄 사람이 있습니까?

링크 (들)

문서 이벤트 JStree : http://www.jstree.com/api/#/?q=.jstree%20Event&f=enable_node.jstree

+0

당신이 선택/해제 상태가 서버 측에 저장할 수 싶어 : 당신이 하나를 선택하고자 할 때 그리고 falsemultiple 구성 옵션을 설정? 다음에 트리를 다시로드하면 같은 상태가됩니다. –

+0

아니요 트리 외부를 클릭 할 때 노드를 선택하고 싶지 않습니다. –

+0

여기에 몇 가지 좋은 제안이 있습니다. http://stackoverflow.com/questions/11576444/how-to-listen-to-jstree-deselect-event/. 선택을 취소하려면 Ctrl 키를 계속 누릅니다. –

답변

10

이 문제는 오늘 나를 위해 팝업. 적어도 트리를 초기화 할 때 설정할 수있는 구성 옵션이 필요했습니다.

var _selectedNodeId; 
$("#myTree").on("select_node.jstree", function (e, _data) { 
    if (_selectedNodeId === _data.node.id) { 
     _data.instance.deselect_node(_data.node); 
     _selectedNodeId = ""; 
    } else { 
     _selectedNodeId = _data.node.id; 
    } 
}).jstree(); 

는 기본적으로 내가 선택한 노드를 추적하고 클릭 된 노드에 대해이를 확인하고 있습니다 : 그것은 꽤 아니지만, 이것은 내가 문제를 회피 한 것입니다. 이 메소드의 단점은 "changed.jstree"에서 콜백이 발생하면 먼저 "선택"하고 이미 선택되어 있다면 "선택 취소"하기 때문에 두 번 실행됩니다.

+1

_data.instance.deselect_node (_data.node); <- 이것은 내가 찾던 마법의 코드 행이었다. 고맙습니다. – BrianLegg

0

multiselect 플러그인을 추가하여이 동작을 사용할 수있는 방법을 찾았습니다.

$('#my-tree').jstree({ 
    core: { multiple: false }, 
    plugins: ['multiselect'] 
})