我有一个与此链接类似的带有分隔符的过滤列表。我的工作与示例完全相同,除了分隔线在内容为空时不隐藏,这是我想要实现的。
http://jquerymobile.com/test/docs/lists/lists-search-with-dividers.html
keyup 事件中的第一个代码块用于过滤列表,但是当我添加第二个块时它会中断。
$("#filter").keyup(function () {
var filter = $(this).val(), count = 0;
$(".filtered:first li").each(function () {
if ($(this).text().search(new RegExp(filter, "i")) < 0) {
$(this).addClass("hidden");
} else {
$(this).removeClass("hidden");
count++;
}
});
//code i've added
$('.li-group').each(function(){
if($(this).children(':visible').length == 0) {
$(this).prev().css('display','none');
}
}):
});
我的 HTML 有这样的结构:
<li class="divider">A</li>
<div class="li-group">
<li>
<a href="#">Link</a>
</li>
<li>
<a href="#">Link</a>
</li>
</div>
<li class="divider">B</li>
<div class="li-group">
<li>
<a href="#">Link</a>
</li>
<li>
<a href="#">Link</a>
</li>
</div>
我试图用我的代码做的是,在每个 keyup 事件上,检查是否所有的孩子div.li-group
都被隐藏,如果是,那么隐藏前一个元素,即列表的分隔符。
注意,我知道我的代码目前没有语义,但我想在我回去清理代码之前让我的演示工作。