Jquery 隐藏JSTree中的特定节点

Jquery 隐藏JSTree中的特定节点,jquery,asp.net-mvc-3,jstree,each,Jquery,Asp.net Mvc 3,Jstree,Each,我有一个带有文件夹对象列表的标准jstree。用户可以对文件夹名称进行基本搜索,我想隐藏所有与搜索不匹配的文件夹。在我需要实际隐藏不匹配的节点之前,一切都正常 //Iterate through all elements of the tree. var xmlString = $("#standardTree").jstree("get_xml"); var xmlDOM = $.parseXML(xmlString); var items = $(xmlDOM).find("root ite

我有一个带有文件夹对象列表的标准jstree。用户可以对文件夹名称进行基本搜索,我想隐藏所有与搜索不匹配的文件夹。在我需要实际隐藏不匹配的节点之前,一切都正常

//Iterate through all elements of the tree.
var xmlString = $("#standardTree").jstree("get_xml");
var xmlDOM = $.parseXML(xmlString);
var items = $(xmlDOM).find("root item");

$.each(items, function (key, item) {
     //If a node's text doesn't match the search, hide that node.
     if ($(item).text() != result.searchString) {

          //**Not sure what to do here, this doesn't work.**
          $(item).hide();
     }
});
我找到了解决办法

通过尝试使用$(item).hide(),我试图隐藏对象本身。我必须先得到li元素,然后才能毫无问题地隐藏它

$.each(items, function (key, item) {
    var treeNode = document.getElementById($(item).attr("id"));

    if ($(item).text() != result.searchString) {
        $(treeNode).hide();
    }
});

由于jstree 3.2.0,还可以使用来隐藏节点。这意味着重新绘制后节点仍将隐藏

$("#tree").jstree(true).hide_node(treeNode);
这对我有用

var isFiltered  = false;
function filter() {
    isFiltered = !isFiltered;       
    var filterText = document.getElementById("newParent").value;
    var $tree = $('#jstree');
    $($tree.jstree().get_json($tree, {
          flat: true
        }))
        .each(function(index, value) {
          var node = $("#jstree").jstree().get_node(this.id);         
          if (isFiltered && !node.text.includes(filterText))
            $("#jstree").jstree(true).hide_node(node);
        else
            $("#jstree").jstree(true).show_node(node);

    });
}
使用$(this).hide代替。我可能错了,但在这种情况下,$(this).hide()不是与$(item).hide()完全相同吗?