Javascript 过滤多级列表
我有一个深度嵌套的列表(10个级别),我想筛选该列表,以便获得我搜索的Javascript 过滤多级列表,javascript,nested-lists,fuzzy-search,jquery-filter,Javascript,Nested Lists,Fuzzy Search,Jquery Filter,我有一个深度嵌套的列表(10个级别),我想筛选该列表,以便获得我搜索的,如果该有子项,我也想向他们展示,下面是一个代码示例 $(文档).ready(函数(){ $(“#过滤器”).keyup(函数(){ var filter=$(this.val(); $(“li”)。每个(功能){ 如果(过滤器==“”){ $(this.css(“可见性”、“可见”); $(this.fadeIn(); }else if($(this).text().search(新的RegExp(filter,“i”))
,如果该
有子项,我也想向他们展示,下面是一个代码示例
$(文档).ready(函数(){
$(“#过滤器”).keyup(函数(){
var filter=$(this.val();
$(“li”)。每个(功能){
如果(过滤器==“”){
$(this.css(“可见性”、“可见”);
$(this.fadeIn();
}else if($(this).text().search(新的RegExp(filter,“i”)))<0){
$(this.css(“可见性”、“隐藏”);
$(this.fadeOut();
}否则{
$(this.css(“可见性”、“可见”);
$(this.fadeIn();
}
});
});
});代码>
- 汤姆
- 彼得
- 约翰
- 母鹿
- 什叶派
- 尼古拉斯
- 里姆
- 丹尼尔
- 亚当
$(文档).ready(函数(){
$(“#过滤器”).keyup(函数(){
var filter=$(this.val();
$(“li”)。每个(功能){
如果(过滤器==“”){
$(this.css(“可见性”、“可见”);
$(this.fadeIn();
}else if($(this).text().search(新的RegExp(filter,“i”)))<0){
$(this.css(“可见性”、“隐藏”);
$(this.fadeOut();
}否则{
$(this.css(“可见性”、“可见”);
$(this.fadeIn();
}
});
});
$('.hasSub')。单击(函数(){
$(this.parent().toggleClass('subactivated');
$(this.parent().children('ul:first').toggle();
if($(this).find('i').hasClass('glyphicon-folder-open')){
$(this).find('i').removeClass('glyphicon-folder-open').addClass('glyphicon-folder-close');
}否则{
$(this).find('i').removeClass('glyphicon-folder-close').addClass('glyphicon-folder-open');
}
});
});代码>
.fordtreeview ul{
显示:无;
利润率:15px-16px;
列表样式:无;
}
.fordtreeview ul{
显示:块;
}
fordtreeview ul li先生{
左:5px;
右边距:10px;
颜色:#333;
}
李:第一个孩子{
显示:块!重要;
}
fordtreeview li先生,
fordtreeview{
颜色:#333;
文字装饰:无;
光标:指针;
}
.fordtreeview i.glyphicon{
右边距:5px;
}
.未激活,
.fordtreeview>li:不是(:第一个孩子):悬停{
背景色:#F5;
}
彼得
约翰
尼古拉斯
丹尼尔
- Adam
确定:)仅添加
else if($(this).text().search(new RegExp(filter,“i”))<0){
如果(!$(this.parent().parent().is('li')){
$(this.css(“可见性”、“隐藏”);
$(this.fadeOut();
}
}
一旦找到匹配的Regexp,您可能希望停止检查元素。我打赌你可以用nextUntil
重新编写你想要的函数:你能给我一个工作示例吗?这几乎是我已经拥有的,但不是我想要的。我想要的是,如果我搜索“彼得”和“彼得”有孩子,我想能够扩展“彼得”和谁是他的孩子。
else if ($(this).text().search(new RegExp(filter, "i")) < 0) {
if(!$(this).parent().parent().is('li')){
$(this).css("visibility", "hidden");
$(this).fadeOut();
}
}