我有一个基于< ul>和< li>标签
我试图根据过滤器文本隐藏分支。 这是我的显示/隐藏代码:
$("#filter").change(function(){
var tval=$(this).val();
$("li").show();
$("li").not(":contains(\'"+tval+"\')").hide();
$("li").is(":contains(\'"+tval+"\')").show();
})
命令: $( “李”)为( “:包含(\ ' ”+ tval +“ \')”)显示()。 显示按给定tval过滤的分支,但是如果给定< li>还有一个孩子,我想向他们展示。 如果它们存在,我如何显示所有子元素?
亲切的问候阿曼。
修改
示例:搜索文本A,我们有D => A => C,D => C => C,A => K => S,所以在过滤后我的树应该是:D => A => C,A => K => S.在当前的实现中,它看起来像D => A,A
答案 0 :(得分:3)
您可以将此方法简化为:
$("#filter").change(function(){
var tval=$(this).val();
$("li").hide().filter(":contains('"+tval+"')").find('li').andSelf().show();
});
这会隐藏所有 <li>
元素,然后显示它们是否直接包含该值(或者是包含它的父级)...并且还显示所有后代{{1元素,显示所有孩子希望就像你想要的那样。
答案 1 :(得分:0)
如果我理解正确,child selector就是你想要的。
答案 2 :(得分:0)
试试这个
$("#filter").change(function(){
var tval=$(this).val();
$("li").hide();
if(tval != ""){
$("li").each(function() {
if($(this).is(":contains(\'"+tval+"\')")){
$(this).show().find('li').show();
}
});
}
else {
$("li").show();
}
})
所以隐藏所有这些,然后寻找匹配,然后为每个匹配的li显示它和所有的孩子li
编辑:再次编辑,对不起我上次完全错过了