2010-09-09 4 views
20

Ich benutze das jsTree jQuery Plugin und möchte Code ausführen, wenn der Benutzer auf einen Knoten doppelklickt.Wie kann ich benutzerdefiniertes Verhalten an einen Doppelklick in jsTree anhängen?

Ich kann nicht scheinen, es zur Arbeit zu bringen. Ich habe eine Dokumentation zu einem ondblclk Ereignis gefunden, aber es wird nicht ausgelöst.

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

Wie kann ich umgehen Doppelklick auf Ereignisse mit jstree?

+1

Es erscheint die Dokumentation I für den oben Code-Schnipsel gefunden war out-of-date. – GiddyUpHorsey

Antwort

21

Es stellt sich heraus, dass ich das tun kann:

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

node enthält die li, die angeklickt wurde und data enthält die Metadaten mit meiner info drin.

+1

Daten werden nicht definiert zurückgegeben. –

6

'dblclick.jstree' existiert nicht in der letzten Version jsTree 1.0.

Doubleclick für den Knoten:

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

das Einfügen, wenn Sie Knoten nur dblclicked wollen

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

Ich sehe keine "IDs" in meinem Baum (Ich benutze das HTML_DATA-Plugin, um meinen Baum zu erstellen, und ich habe keine Mühe, IDs zu erstellen), aber diesen Code lässt es nicht zu. ".on()" ist der modernere jQuery-Weg, um dies zu tun, also auch $ ("# yourtree"). on ("dblclick", "a", function (e) {...}); – mhenry1384

4

Es ist ein bisschen anders, um die Daten aus für mich, aber sonst GiddyUpHorsey Antwort war spot-on . Hier ist der Code wieder:

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

das gleiche für mich, außer entfernen Sie die Daten aus dem Rückruf, da es nicht definiert ist – frage

1

Die oben genannten Antworten funktionieren nicht auf die neueste Version von jstree (die 3.3.4 ist)
Das kostete mich einen Tag der Geist Biegearbeit, aber ich habe es endlich. Hier ist Doppelklick funktionierenden Code zu bearbeiten:

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

und hier ist ein Arbeits jsfiddle.

0

als Version 3.3.5, ich bin mit diesem:

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