按链接重定向并不适用于jstree

时间:2016-05-18 06:28:24

标签: javascript jquery jstree

jstree jquery plugin中,我希望当用户点击某个节点时,重定向到点击链接的href。

这是传递给jstree的数据:

[
    {
        "id": 4,
        "contentable_id": 8,
        "contentable_type": "App\\Unit",
        "text": "واحد جدید",
        "parent_id": "#",
        "icon": "fa fa-file-text-o",
        "a_attr": {
            "href": "./unit/8/edit"
        }
    },
    {
        "id": 5,
        "contentable_id": 5,
        "contentable_type": "App\\Unit",
        "text": "واحد من ",
        "parent_id": "#",
        "icon": "fa fa-file-text-o",
        "a_attr": {
            "href": "./unit/5/edit"
        }
    }
]

以下是jstree呼叫代码:

$treeview.jstree({
    "core": {
        'data': {
            'url': targetUrl
        },
        "check_callback": true,
        "animation": 200,
        "dblclick_toggle": false,
        "keep_selected_style": false
    },
    "plugins": ["dnd", "contextmenu"],
    "contextmenu": {
        "select_node": false, 
        "show_at_node": false,
    }
    }).on('changed.jstree', function (e, data) {
        document.location = data.instance.get_node(data.selected[0], true).a_attr.href;
    });

如您所见,我使用已更改 jstree事件来捕获点击事件和重定向,因为建议使用jstree作者here

但是当点击节点上的链接时会发生此错误:

Uncaught TypeError: Cannot read property 'href' of undefined

什么是问题,什么是正确的解决方案?

1 个答案:

答案 0 :(得分:0)

我可以找到解决方案。

通过尝试下面的代码我的问题就解决了。

on("changed.jstree", function (e, data) {
    if(data.node) {
       document.location = data.node.a_attr.href;
    }
});