2010-09-09 8 views
20

Używam wtyczki jsTree jQuery i chcę wykonać kod, gdy użytkownik dwukrotnie kliknie węzeł.Jak dołączyć zachowanie niestandardowe do podwójnego kliknięcia w jsTree?

Nie mogę sprawić, żeby zadziałało. Znalazłem dokumentację na zdarzeniu ondblclk, ale się nie uruchamia.

browser.jstree(
      { 
       plugins: ["themes", "json_data", "ui", "cookies"], 
       callback: 
       { 
        ondblclk: function (node, tree) { 
         if (!thisReportBrowserthis._isFoldersOnly) { 
          var f = node; 
         } 
        } 
       } 
      } 
     ); 

Jak mogę obsługiwać podwójne zdarzenia kliknięcia z jstree?

+1

Wydaje dokumentacja znalazłem na powyższym fragmencie kodu był out-of-date. – GiddyUpHorsey

Odpowiedz

21

Okazuje się, mogę to zrobić:

jstree.bind("dblclick.jstree", function (event) { 
    var node = $(event.target).closest("li"); 
    var data = node.data("jstree"); 
    // Do my action 
}); 

node zawiera li który został kliknięty i data zawiera metadane z moich informacji w nim.

+1

Dane są niezdefiniowane. –

6

"dblclick.jstree" nie istnieje w ostatniej wersji jsTree 1.0.

DoubleClick dla węzła:

$("#yourtree").delegate("a","dblclick", function(e) { 
    var idn = $(this).parent().attr("id").split("_")[1]; 
    alert(idn); //return NodeID  
}); 

Włóż jeśli chcesz po prostu dblclicked węzłowi

if (this.className.indexOf('icon') == -1) { /* is the node clicked a leaf? */ } 
+0

Nie widzę żadnych "id" na moim drzewie (używam wtyczki HTML_DATA do tworzenia mojego drzewa i nie zawracałem sobie głowy tworzeniem jakichkolwiek identyfikatorów), ale pomijanie tego kodu działa. ".on()" jest bardziej nowoczesną metodą jQuery to zrobić, więc wykonaj $ ("# yourtree"). on ("dblclick", "a", function (e) {...}); – mhenry1384

4

To trochę inny, aby uzyskać dane dla mnie, ale w przeciwnym razie odpowiedź GiddyUpHorsey był spot-on . Oto kod ponownie:

 jstree.bind("dblclick.jstree", function (e, data) { 
      var node = $(e.target).closest("li"); 
      var id = node[0].id; //id of the selected node 
     }); 
+0

samo dla mnie, z wyjątkiem usunięcia danych z wywołania zwrotnego, ponieważ jest niezdefiniowany – frage

1

Powyższe odpowiedzi nie działa na najnowszej wersji jstree (co jest 3.3.4)
To kosztowało mnie dzień pracy umysłu gięcia ale w końcu dostał. Oto DoubleClick pracuje Edycja kodu:

$('#tree1').bind("dblclick.jstree", function (event) { 
 
    var tree = $(this).jstree(); 
 
    var node = tree.get_node(event.target); 
 
    tree.edit(node); 
 
});

i tu jest praca jsfiddle.

0

w wersji 3.3.5, używam tego:

 $('#jstree').on("dblclick.jstree", function (e) { 
      var instance = $.jstree.reference(this), 
      node = instance.get_node(e.target); 
      // Code 
     });