2010-09-09 3 views
20

Я использую плагин jsTree jQuery и хочу выполнить код, когда пользователь дважды нажимает на узел.Как связать пользовательское поведение с двойным щелчком мыши в jsTree?

Я не могу заставить его работать. Я нашел документацию на мероприятии ondblclk, но он не срабатывает.

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

Как я могу обрабатывать события двойного щелчка мышью с jstree?

+1

Оказывается документацией я нашел для приведенного выше фрагмента кода была устарелым. – GiddyUpHorsey

ответ

21

Оказывается, я могу это сделать:

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

node содержит li, которая была нажата и data содержит метаданные с моей информации в нем.

+1

Данные не определены. –

6

'dblclick.jstree' не существует в последней версии jsTree 1.0.

DoubleClick для узла:

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

Вставьте это, если вы хотите просто dblclicked узлу

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

Я не вижу никаких «id» на моем дереве (я использую плагин HTML_DATA для создания моего дерева, и я не удосужился создавать какие-либо идентификаторы), но при этом не работает этот код. «.on()» - это более современный способ jQuery для этого, так что $ («# yourtree»). on («dblclick», «a», function (e) {...}); – mhenry1384

4

Это немного отличается, чтобы получить данные для меня, но в противном случае ответ GiddyUpHorsey был спот- , Вот код еще раз:

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

для меня, кроме удаления данных из обратного вызова, поскольку он не определен – frage

1

Вышеуказанные ответы не работают на последнюю версию jstree (что 3.3.4)
Это стоило мне день умопомрачительной работы, но я, наконец, получил его. Здесь работает двойной щелчок для редактирования кода:

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

и здесь является рабочим jsfiddle.

0

в версии 3.3.5, я использую это:

 $('#jstree').on("dblclick.jstree", function (e) { 
      var instance = $.jstree.reference(this), 
      node = instance.get_node(e.target); 
      // Code 
     }); 
Смежные вопросы