获取选定的Jstree节点值JQuery

时间:2014-08-25 08:05:29

标签: jquery jstree

我在获取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(', '));
    })
});

5 个答案:

答案 0 :(得分:16)

以上都没有为我工作。 这很有效:

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

答案 1 :(得分:3)

而不是

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();
    }

答案 2 :(得分:2)

简单地获取所有选定的ID使用以下代码

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

现在,您已在&#34; selectedData&#34;中找到了所有选定的ID。变量

答案 3 :(得分:0)

哦,它很容易 而不是

  

的console.log(data.instance.get_node(data.selected [0])。文本)

答案 4 :(得分:0)

  1. 添加插件:

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

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