Jquery 隐藏JSTree中的特定节点
我有一个带有文件夹对象列表的标准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
//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()完全相同吗?