2011-07-29 1 views
4

웹 페이지의 트리보기에 jstree를 사용하고 있습니다.[jsTree] : 'rename'및 'move'이벤트가 새 노드로 시작되지 않는 이유는 무엇입니까?

트리를 사용하여 노드의 이름을 바꾸거나 노드를 이동할 수 있습니다. 노드를 이동하거나 이름을 바꾸면 rename_node.jstree 및 rename_node.jstree 이벤트가 발생합니다.

새 노드 (rename_node.jstree events으로 생성됨)를 사용하면 노드의 이름을 바꾸고 이동할 수 있지만 move_node.jstree 및 rename_node.jstree 이벤트는 실행되지 않습니다.

이벤트는 초기 노드에서만 바인딩 된 것으로 보입니다. 이후 생성 된 노드와 이벤트를 바인딩하는 '라이브'메소드가 표시되지 않습니다.

그럴 가능성이 있습니까?

$(function(){ 
    $("#nodes").jstree({ 
     "plugins" : [ "themes", "html_data", "dnd", "ui", "crrm" ] 
    }).bind("move_node.jstree", function (event, data) { 
     alert('move'); 
    }).bind("rename_node.jstree", function (event, data) { 
     alert('rename'); 
    }).bind("create_node.jstree", function (event, data) { 
     alert('create_node'); 
    }) 

    $("#create_button").click(function() { 
     $("#nodes").jstree("create",null,"last",{data:"name"}); 
    }); 
}); 
+0

일부 이벤트가 설명되어 있습니다. https://groups.google.com/d/msg/jstree/UIFqvVgmncQ/JsBVcbB-w5gJ –

답변

2

이벤트가 올바르게 발생하는 것으로 보입니다. 문제는 논리의 어딘가에있었습니다. 항목의 ID를 올바르게 처리해야했습니다.

$("#nodes").jstree("create",null,"last",{data:the_name, attr: {id: the_id}}); 

죄송합니다.

5

명령은 내가 생각 create_node하지 create입니다 : 여기

도움이 샘플 (I 희망이) 내 문제를 이해하는 것입니다. 자세한 내용은 http://www.jstree.com/documentation/core을 참조하십시오. 나는 그 주관적이다 알지만, 가치가 무엇을 가져

$(function() { 
    $("#nodes").jstree({ 
     "plugins": ["themes", "html_data", "dnd", "ui", "crrm"] 
    }).bind("move_node.jstree rename_node.jstree create_node.jstree", function(event, data) { 
     var type = event.type; 
     alert(type); 
     if (type === 'move_node.jstree') { 
      //handle move_node.jstree here 
     } else if (type === 'rename_node.jstree') { 
      //handle rename_node.jstree here 
     } else if (type === 'create_node.jstree') { 
      //handle create_node.jstree here 
     } 

    }); 

    $("#create_button").click(function() { 
     $("#nodes").jstree("create", null, "last", { 
      data: "name" 
     }); 
    }); 
}); 

:로


참고로, 코드가 더 나은 기록 될 것입니다.

+0

답변과 조언에 감사드립니다. 그것은 create_node에도 불구하고 새로 만든 노드의 이름을 바꿀 때 rename_node.jstree 이벤트를 얻지 못하는 것 같습니다. 내 이벤트 콜백에 문제가있을 수 있지만 귀하의 충고로 내 코드를 리팩토링하는 데 약간의 시간이 필요합니다. – luc

+0

이벤트를 처리하는 방식이 "올바른"방식 인 이유에 대해주의를 기울여야합니까? –