jsTree - получает выбранный узел по событиюloaded.jstree. - PullRequest
4 голосов
/ 07 ноября 2011

Как я могу получить выбранный узел в событииloaded.jstree?

что мне делать в обработчике событий:

    $('#Tree').bind('loaded.jstree', function(event, data){//TODO: How to get the selected node here?}).jstree();

Кстати, я обнаружил, что объект arg с данными о событиях содержит функцию get_selected (), но не может получить от нее ничего.

Моя цель - перенаправить клиента на текущий выбранный узел (по атрибуту 'url').

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 07 ноября 2011

Кажется согласно документации демо здесь:

http://www.jstree.com/demo

Вы можете сделать:

.one("reselect.jstree", function (event, data) { });

или

.bind("select_node.jstree", function (event, data) {  
                // `data.rslt.obj` is the jquery extended node that was clicked 
                alert(data.rslt.obj.attr("id")); 
            })

Внимательно прочитайте документацию как:

один используется, это потому, что если refresh называется, эти события срабатывает

// 1) if using the UI plugin bind to select_node
        .bind("select_node.jstree", function (event, data) { 
            // `data.rslt.obj` is the jquery extended node that was clicked
            alert(data.rslt.obj.attr("id"));
        })
        // 2) if not using the UI plugin - the Anchor tags work as expected
        //    so if the anchor has a HREF attirbute - the page will be changed
        //    you can actually prevent the default, etc (normal jquery usage)
        .delegate("a", "click", function (event, data) { event.preventDefault(); })

Для последнего события delegate вместо записи event.preventDefault(); вы можете правильно выполнить перенаправление, если вы не используете плагин интерфейса пользователя, и написать: window.location = $(this).attr('href');

0 голосов
/ 18 сентября 2015

Вы можете выбрать текущий узел:

$('#' + data.node.id)

Код становится:

$('#Tree').bind('loaded.jstree', function(event, data){
console.log($('#' + data.node.id)); //This is current node, see on console
}).jstree();
...