jstree设置节点href链接并添加onclick事件

时间:2015-12-10 16:15:36

标签: javascript jquery html asp.net jstree

我是jQuery和jsTree的新手,我试图完成两件事。 1)我希望节点在单击时转到指定的URL。默认情况下,li的{​​{1}}标记位于a。 2)我想在某些节点上添加一个onClick事件。我已经搜索过,而且我似乎无法就如何做到这一点得到明确的答案。我尝试了以下方法:

href=#

我的数据填充,我使用asp转发器如下:

Treeview.aspx

$(function () {
    $('#leftNav').jstree({
        "core": {
            "themes": {
                'name': 'default',
                "variant": "small",
                "icons": false
            }
        },
        "checkbox": {
            "keep_selected_style": false
        },
    });
});

$('#leftNav').on("changed.jstree", function (e, data) {
    console.log(data.selected);

    var i, j;
    for (i = 0, j = data.selected.length; i < j; i++) {
        var nodeId = data.selected[i]
        nodeId = "#" + nodeId
        // 1) Code to change node url
        $(nodeId).attr("href", "http://www.google.com/")

        // 2) Code to add onClick to node
        $(nodeId).click("myFunction")
    }
});

Treeview.aspx.vb

<div id="leftNav">
   <asp:Repeater ID="rptr" runat="server" EnableViewState="False" OnItemDataBound="loadTreeView">
      <HeaderTemplate>
         <ul>
            <li class="jstree-open">
               My Workplace
               <ul>
      </HeaderTemplate>
      <ItemTemplate>
      <li id="listItem" runat="server"></li>
      </ItemTemplate>
      <FooterTemplate>
      </ul>
      </li>
      </ul>
      </FooterTemplate>
   </asp:Repeater>
</div>

2 个答案:

答案 0 :(得分:2)

#1。上述代码是否有任何错误?

#2。为select_node.jstree添加一个事件,然后获取节点ID并重定向 - 避免测试代码可能有错误

Menu

答案 1 :(得分:2)

如果您只需1)在您的网址上打开一个新窗口,2)在选择更改时调用一些功能,您可以这样做:

$('#leftNav').on("changed.jstree", function (e, data) {

    // open a new window with your url
    window.open("http://www.google.com/");

    // call a function
    myFunction();

})

然而,在这个小提琴中,我保留了对每个新选择更改的所有选定节点的迭代:JS Fiddle