Как я могу прикрепить пользовательское поведение к двойному щелчку в jsTree? - PullRequest
21 голосов
/ 09 сентября 2010

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

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

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

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

Ответы [ 5 ]

24 голосов
/ 10 сентября 2010

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

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

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

6 голосов
/ 19 сентября 2010

'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? */ }
4 голосов
/ 13 апреля 2011

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

        jstree.bind("dblclick.jstree", function (e, data) {
            var node = $(e.target).closest("li");
            var id = node[0].id; //id of the selected node
        });
2 голосов
/ 16 ноября 2017

Приведенные выше ответы не работают с последней версией 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 голосов
/ 18 февраля 2018

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

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