2014-04-29 101 views
6

我試圖捕獲jsTree 3.0.0中的dnd事件。我使用演示代碼來構建事件處理程序。樹建立良好,但事件永遠不會開火。我錯過了什麼?jsTree不發射事件

這是相關的部分。 JSON工作正常,並構建樹本身查找。但是,在拖放樹時,console.log調用從不會發生。

<link href="/jquery/jquery-ui-1.10.3/css/ui-lightness/jquery-ui-1.10.3.custom.min.css" rel="Stylesheet"/> 
<script src="/jquery/jquery-ui-1.10.3/js/jquery-1.9.1.js"/> 
<script src="/jquery/jquery-ui-1.10.3/js/jquery-ui-1.10.3.custom.min.js"/> 
<link href="/jquery/plugins/jsTree/themes/default/style.min.css" rel="stylesheet"/> 
<script src="/jquery/plugins/jsTree/jstree.js"/> 
<script> 
    $(function() { 
     $('#jstree') 
     // listen for events 
     .on('dnd_start.vakata', function (e, data) { 
      console.log('Dragged'); 
     }) 
     .on('dnd_stop.vakata', function (e, data) { 
      console.log('Dropped'); 
     }) 
     // create the instance 
     .jstree({ 
      "core" : { 
       "check_callback" : true, 
       'data' : {        
        'url' : 'categoriesJson.pm?json=1', 
        'data' : function(node) { 
         console.log (node); 
         return { 
          'id' : node.id 
         } 
        } 
       }, 
       "themes" : { 
        "stripes" : true 
       } 
      }, 
      "plugins" : [ "dnd" ] 
     }); 

     $(document).bind("drag_stop.vakata", function (e, data) { 
      if (data.data.jstree) { 
       console.log('User stopped dragging'); 
      } 
     });     
    }); 
</script>     
+2

好的,我發現move_node事件觸發。所以這個工程: \t。對( 'move_node.jstree',函數(即數據){ \t \t的console.log( '感動'); \t}) 仍然好奇,爲什麼在文檔唐的vakata事件不過,工作。 – GeoJunkie

回答

19

該事件僅在「文檔」上觸發。 試試這個:

$(document).on('dnd_start.vakata', function (e, data) { 
    console.log('Started'); 
}); 

它的工作原理!

3

在文檔https://www.jstree.com/api/#/?q=event&f=dnd_start.vakata

的DnD事件(dnd_start,dnd_move,dnd_stop)被觸發的文件,而不是樹。

這些事件與「move_node.jstree」事件不同,該事件僅在拖動& Drop(相當於Drop事件)結束時被調用。

$(document).bind("dnd_start.vakata", function(e, data) { 
    console.log("Start dnd"); 
}) 
.bind("dnd_move.vakata", function(e, data) { 
    console.log("Move dnd"); 
}) 
.bind("dnd_stop.vakata", function(e, data) { 
    console.log("Stop dnd"); 
}); 
$("#tree").jstree({ 
    // tree... 
}).bind("move_node.jstree", function(e, data) { 
    console.log("Drop node " + data.node.id + " to " + data.parent); 
});