我有一些列表和一些標題,我想過濾列表。 我已經完成了這個部分,你可以在下面的演示鏈接中看到。但我有一些我無法弄清楚的標準。帶有標題的jQuery過濾器列表
- 如果標題匹配的一些字符的輸入,則顯示所有繼
<ul>
- 孩子如果頭不匹配的一些字符的輸入,但在
<ul>
的話,則表現出一定的項目,做,也是<li>
顯示頭 - 如果以下
<ul>
匹配輸入由一些字符既不頁眉或,隱藏兩個頭部和項目在以下<ul>
jQuery(function() {
var listFilter = {
init: function(header, list) {
$('.filterdrp_input')
.change(function() {
var filter = this.value.trim();
if(filter) {
myFilter(header);
myFilter(list);
function myFilter(selector) {
$(selector).find('[data-name]').hide()
.filter('[data-name*="'+ filter +'"]')
.show();
}
}
else {
$(header).find("span").show();
$(list).find("li").show();
}
return false;
})
.keyup(function() {
$(this).change();
});
}
}
listFilter.init($(".list-header"), $('.filterdrp').find('ul'));
});
<div class="filterdrp">
<input type="text" placeholder="search" class="filterdrp_input">
<h2 class="list-header">
<span data-name="name_01">
name_01
</span>
</h2>
<ul class="list">
<li class="list__item" data-name="item_01">
item_01
</li>
<li class="list__item" data-name="item_02">
item_02
</li>
<li class="list__item" data-name="item_03">
item_03
</li>
</ul>
<h2 class="list-header">
<span data-name="name_02">
name_2
</span>
</h2>
<ul class="list">
<li class="list__item" data-name="item_06">
item_06
</li>
<li class="list__item" data-name="item_07">
item_07
</li>
<li class="list__item" data-name="item_08">
item_08
</li>
</ul>
我已經更新了我的解決方案,因此,這裏是最後的工作示例 http://jsfiddle.net/x2oshad5/6/
如果沒有'listFilter'知道HTML的結構,就不可能做到這一點。由於您的方法接受2個獨立的「列表」(包裝爲jQuery集合),因此它不能將任何內容應用於下一個列表。要麼將HTML的結構更改爲父 - >子結構,要麼放寬規則,以便函數知道結構。 – Amit