jsTree - 在loaded.jstree事件上获取所选节点

时间:2011-11-07 13:34:17

标签: javascript jquery jstree

如何在loaded.jstree事件中获取所选节点?

我应该在事件处理程序中做什么:

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

顺便说一句,我发现事件数据arg对象包含一个名为get_selected()的函数,但无法从中获取任何内容。

我的目的是将客户端重定向到当前选定的节点(通过'url'属性)。

提前致谢

2 个答案:

答案 0 :(得分:2)

根据此处的演示文档似乎:

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,如果您没有使用UI插件,则可以正确地进行重定向,并写下:event.preventDefault();

答案 1 :(得分:0)

您可以通过以下方式选择当前节点:

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

代码变为:

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