首页 > 解决方案 > 仅针对子节点的 jsTree 搜索查询

问题描述

我正在使用带有搜索插件的 jsTree。现在我希望搜索只匹配子节点而不是父节点。

这是我已经实现的:

"search": {
        case_insensitive: true,
        show_only_matches: true,
        search_leaves_only: true,
    }

这是我的树的一个例​​子:

▼ Parent1
    └ child 1
  ParentABC
▼ Parentxyz
    └ child abc

ParentABC没有子节点,如果我搜索“abc”,两者ParentABCchild abc显示,但预期的结果应该child abc只有。

search_leaves_only: true在子节点上效果很好,因为它们本身没有子节点。jsTree 在没有子节点时将节点视为叶子。

那么我可以通过什么方式仅对子节点进行搜索查询?

编辑: 解决方案

我只需要使用search_callback自定义功能。这里是:

"search": {
        show_only_matches: true,
        search_callback: function (searchString, node) {
            if (node.parent != "#" && node.text.toUpperCase().includes(searchString.toUpperCase()) == true) {
                return node;
            }
        }
    }    

我填充树的方式是使用 JSON 数据,并且我的所有父节点的属性都parent"#". case_insensitive: true不再工作了,这就是我使用的原因toUpperCase()

标签: jstreejstree-search

解决方案


推荐阅读