在 jsTree 中只显示匹配的节点

Show only matched node(s) in jsTree

我有一个基于 class jsTree 插件选择器的通用代码。我在另一个 cshtml 页面中使用了 jsTree。我只想显示在 jsTree 中搜索的匹配节点。我已经将选项设置为仅显示匹配的节点,但它不起作用。

谁能帮帮我吗?

$(".jsTree").each(function (index, element) {
    if ($(element).data("isProcessed") != "1" && $(element).attr("isProcessed") != 1) {
        $(element).data("isProcessed", "1");
        $(element).attr("isProcessed", "1");
        $(this).jstree({
            core:
            {
                check_callback: true
            },
            checkbox:
            {
                keep_selected_style: true,
                three_state: ($(element).data("three-state") == "false" ? false : true)
            },
            search:
            {
                case_insensitive: true,
                show_only_matches: true
            },
            plugins: ["checkbox", "search"]
        }).on('search.jstree', function (nodes, str, res) {
            if (str.nodes.length === 0) {
                $(element).jstree(true).hide_all();
            }
        });
    }
});

$(document).ready(function () {
    $('#jsroletree_search').keyup(function () {
        $('#jsRoleTree').jstree(true).show_all();
        $('#jsRoleTree').jstree('search', $(this).val());
    });
});

我有时在公共代码中遇到同样的问题 jsTree 不允许在同一页面上多一个实例。

你能替换你的代码吗

$(document).ready(function () {
    $('#jsroletree_search').keyup(function () {
        $('#jsRoleTree').jstree(true).show_all();
        $('#jsRoleTree').jstree('search', $(this).val());
    });
});

$(document).ready(function () {
    $('#jsroletree_search').keyup(function () {
    $('#jsRoleTree').jstree(true).show_all();
    $('#jsRoleTree').jstree('search', $(this).val());
    $('#jsRoleTree .jstree-hidden').hide();    
  });
});