2011-07-06 1 views
3

나는, 다시로드는,페이지

$("#tree-container").jstree('destroy'); 
//then calling the function that reads or renders the tree 

를 호출하기 때문에 버튼을 클릭 메신저 버튼 onclick을 발생해야하는 페이지를 다시로드하거나 새로 고침없이 jstree를 다시로드하기 위해 노력하고있어 상쾌한없이 jstree를 다시로드하는 어떤 트리도 이미 렌더링되지 않았을 때 잘 동작하지만 트리가 이미 렌더링되어 있고 버튼을 클릭하면 다음과 같이됩니다. "정의되지 않은 메소드 init을 호출 할 수 없습니다."jstree plugin에서 오류가 발생합니다.

이 난 나무를

$("#tree-container").remove(); 

$('#parent-tree-container').append($('<div id="tree-container"></div>')); 
//then called the function that reads/renders the tree 

를 읽어하지만 여전히 작동하지 않은 함수를 호출하기 전에에 다시 추가 한 후 부모 컨테이너를 컨테이너있어 제거했습니다. . :(사전에

감사

답변

4

이 트리를 새로 아약스 전화를 할 것입니다,하지만 페이지가 그것에 포함 된 것 :

원하는 경우 가장 좋은 방법이지만,
$.jstree._reference($("#tree-container")).refresh(-1); 

방금 먼저 파괴하지 않고 초기 사업부를 통해 jstree를 재 구축 할 수 있습니다 :

$("#tree-container").jstree({

+0

내용이 변경되어 트리를 다시 작성해야합니다. 내가 나무를 짓기 위해 사용하는 함수는 여러분이 지적한 건물 부분을 가지고 있습니다. jstree ({나는 트리의 인스턴스가 이미 렌더링 된 경우 "정의되지 않은 메소드 초기화를 호출 할 수 없습니다." – Moe

+0

내용이 변경된 경우에도 새로 고침을 사용할 수 있지만, 필요한 경우 jstree url에 플래그를 지정하십시오. 파괴 부분뿐만 아니라 트리 선언을 추가하기 위해 답을 편집하십시오. – Bob

+0

또한 가능합니다 :'$ ('tree-container') .jstree ('새로 고침'); '더 jquery-way'입니다. – beendr

0

그렇다면 당신이 jQuery를 1.6.2를 사용하고, 더 낮은 버전을 사용해보십시오 - 1.6.1이 작동해야합니다. - see here