从不在 fancytree 过滤器中隐藏文件夹

Never hide folders in fancytree filter

我正在使用花式树过滤器插件 http://wwwendt.de/tech/fancytree/demo/#sample-ext-filter.html。我设置了 mode: "hide" 因为我想隐藏不匹配的节点。是否可以永远不隐藏文件夹?

我以为我可以通过添加自定义过滤器来实现这一点,但我一定是做错了什么,因为过滤器似乎没有生效。

我目前正在尝试的自定义过滤器的代码 -

    //tree initialized before this step
    var tree = $("#tree").fancytree("getTree");
    searchText = $('#searchText').val().replace(/([.?*+^$[\]\(){}|-])/g, "\");
    var rex = new RegExp(searchText, 'ig');

    tree.filterNodes(function(node) {
        if(node.isFolder() ) {
            return "skip";
        }
        var match = rex.test(node.title);
        return match;
    });

任何人都可以指出我做错了什么吗?如果您需要任何详细信息,请告诉我。

终于想通了。对于其他有相同要求的人,我使用了以下代码 -

function(node) {
            var found = new RegExp(match, "i").test(node.title);
            if(node.isFolder() ) {
                return true;        //always match a folder
            } else {
                return found;  // otherwise match the nodes only
            }
        }

还需要将 leavesOnly 值设置为 false。请注意,计数器值是错误的,但在我的情况下不需要。