【问题标题】:Get Selected Jstree node values JQuery获取选定的 Jstree 节点值 JQuery
【发布时间】:2014-08-25 08:05:29
【问题描述】:

您好,我在获取 jstree 模型的选定节点的数据时遇到问题。

<script type="text/javascript">
    $('#preview').on("changed.jstree", function (e, data) {
        console.log(data.selected);
        console.log(data.selected.attr("text"));
    });
</script>

第一个控制台日志显示“[js1_1]”或“[js1_2]”,具体取决于所选节点。但是第二个日志“未定义不是函数”;/我尝试了很多不同的方法,但我未能实现获取节点文本(标题)或任何其他信息

我以 json 格式发送模型列表,它看起来像这样:

Public Class JsTreeModel
   Public Property text As String
   Public Property icon As String
   Public Property Id As String
   Public Property PId As String
   Public Property ParentId As String
   Public Property Status As Integer
End Class

有人有解决方案吗?

更新 jstree 代码

<script type="text/javascript">
$(document).ready(function () {

    $('#WhenRemoving').toggle($('.RemoveCheckbox').is(":checked"));
    $('#WhenAdding').toggle(!$('.RemoveCheckbox').is(":checked"));

    $('#preview').jstree({
        'core': {
            'data': {
                'url': '/TreeTest/TreePreview/',
                'data': function (node) {
                    return node;
                }
            }
        }
    }).bind("loaded.jstree", function (event, data) {
        $(this).jstree("open_all");
    })
});
</script>

当我将它添加到我的 jstree 时,我可以在 html div 中看到选定的名称节点

.on('changed.jstree', function (e, data) {
        var i, j, r = [];
        for (i = 0, j = data.selected.length; i < j; i++) {
            r.push(data.instance.get_node(data.selected[i]).text);
        }
        $('#event_result').html('Selected: ' + r.join(', '));
    })
});

【问题讨论】:

    标签: jquery jstree


    【解决方案1】:

    以上都不适合我。 这有效:

    $(treeID).jstree().get_selected(true)[0].text;
    

    【讨论】:

    • 我喜欢错误的答案被选为正确,而正确的答案却不是
    • 这对我也有用。可能接受的答案适用于旧版本。您的答案适用于 jsTree 3.3.4
    【解决方案2】:

    而不是

    data.selected.attr("text")
    

    试试这个

    data.selected.text()
    

    您还可以通过以下方式获取选定的jstree 节点文本:

    console.log($("#preview").jstree("get_selected").text());
    

    或者只绑定select_node.jstree,如图所示

    .bind("select_node.jstree", function (NODE, REF_NODE) {
            var a = $.jstree._focused().get_selected();
        }
    

    【讨论】:

    • 当我在 var 中绑定时,javascript 控制台中仍然出现未定义的错误
    【解决方案3】:

    使用以下代码轻松获取所有选定的 id

     var selectedData = [];
     var selectedIndexes;
      selectedIndexes = $("#jstree").jstree("get_selected", true);
      jQuery.each(selectedIndexes, function (index, value) {
              selectedData.push(selectedIndexes[index].id);
      });
    

    现在您在“selectedData”变量中拥有所有选定的 id

    【讨论】:

      【解决方案4】:

      哦..这很容易 而不是

      console.log(data.instance.get_node(data.selected[0]).text)

      【讨论】:

        【解决方案5】:
        1. 添加插件:

          "plugins": ["changed"]
          
        2. 代码:

          $('#container').on('changed.jstree',function(e,data){ 
                  alert(data.node.text); 
          });
          

        【讨论】:

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