【问题标题】:Get the selected Node from a jstree从 jstree 获取选定的节点
【发布时间】:2013-11-18 17:23:15
【问题描述】:

我正在尝试从 jstree 中获取选定的节点。

这是视图中的代码

<div id="divtree" >
    <ul id="tree" >
         @foreach (var m in Model.presidentList)
         {
             <li class="jstree-clicked">
                  <a href="#" class="usr">@m.Name</a>
                  @Html.Partial("Childrens", m)
              </li>
         }
     </ul>
</div>

这是我尝试检索节点名称的 javascript 部分

$(".jstree-clicked").click(function (e) {
        var node = $(this).jstree('get_selected').text();
        alert(node);
});

我在仅获取选定节点时遇到问题。如果我选择其中一个子节点(例如树的最后一个节点),我仍然会得到整个节点列表。如果您知道我做错了什么,请告诉我?

【问题讨论】:

  • 根据 jstree demo here 我看不出与您的代码有任何相似之处,用于获取单击的节点甚至设置树。

标签: javascript jquery razor jstree


【解决方案1】:

我认为您不应该为每个

  • 节点分配“jstree-clicked”类。 并使用您用于 jstree 绑定的 jstree 容器获取选定的节点。

    console.log($("#divtree").jstree("get_selected").text());
    
  • 【讨论】:

    • 不适合我.. $(treeContainerId).jstree("get_selected"); ["22~58", "22~59"] $(treeContainerId).jstree("get_selected").text(); TypeError: undefined is not a function
    • 您允许 JSTree 选择多个项目。尝试使用 $(treeContainerId).jstree("get_selected")[0].text() 或 $(treeContainerId).jstree("get_selected")[1].text()
    • 这些都不适合我(:我希望有一种清晰简洁的方法来获取选定的节点。
    • Thnx 很多,关于这个主题的 api 文档根本不清楚。对于寻找它的其他人: $("#divtree").jstree("get_selected",true) 将返回完整的对象
    • @KjetilNordin:不客气。我将其转换为答案 :) 我也不总是检查 cmets。
    【解决方案2】:

    var data = $(yourtree).jstree().get_selected(true)[0].text;

    console.log(data);
    

    这对我有用。试一试!

    【讨论】:

    • 也适合我。谢谢。
    【解决方案3】:

    由于更多人发现我的评论有用,我将其转换为答案。感谢 Murali 的回答,我能够解决我的问题。这段代码:

    $("#divtree").jstree("get_selected",true)
    

    将返回完整的对象。 (看真参数)

    【讨论】:

    【解决方案4】:

    试试这个:

    var CurrentNode = $("#divtree").jstree("get_selected");
    console.log($('#'+CurrentNode).text());
    

    【讨论】:

    • 1) 这是错误的。不存在 元素。 2)这看起来像是一个糟糕的副本,并且对已接受的答案进行了轻微的调整。
    • 对不起,我忘记了“#”
    • 你也可以试试这个 -> $('#jstree').on('changed.jstree', function (e, data) { var i, j, r = []; for (i = 0, j = data.selected.length; i
    【解决方案5】:

    这是我如何在他的“选定”父节点中创建一个新节点:

    <div class="input-group mb-3">
        <div class="input-group-prepend">
            <button class="btn btn-secondary" id="add_node">
                Add directory    
            </button>
        </div>
        <input type="text" class="form-control" placeholder="Dir name" id="node_text">
    </div>
    

    还有我的 Javascript:

        htmlSource.jstree();
    
        $('#add_node').on('click', function () {
            let text = $(this).closest('.input-group').find('#node_text').val();
            let selected = htmlSource.jstree('get_selected');
            htmlSource.jstree().create_node(selected, {
                "text": text
            },
            "last",
            function (e) {
                console.log(e);
            });
        })
    

    我希望它可以有用或给某人一个领导

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-25
      • 1970-01-01
      • 2012-05-05
      • 1970-01-01
      相关资源
      最近更新 更多