Как видно из названия, я хочу создать фильтр, который скрывает элементы.Если все дети спрятаны, тогда паретн должен настроить себя так, чтобы не показывать ничего, только я не могу понять, как к нему подойти.Я попробовал ниже без удачи.
https://jsfiddle.net/6wt0jndp/1/
function filter(e){
search = e.value.toLowerCase();
console.log(e.value)
document.querySelectorAll('.kb-item').forEach(function(row){
text = row.innerText.toLowerCase();
if(text.match(search)){
row.style.display="block"
} else {
row.style.display="none"
}
// need to count hidden items and if all instances of .kb-items are hidden, then hide .kb-item
var countHidden = document.querySelectorAll(".kb-item[style='display: none;']").length;
var children = document.querySelectorAll(".kb-items").length;
if(countHidden > children){
row.style.display="none"
}
console.log(countHidden);
})
}
HTML
<div class="kb-items">
<h1>fruits</h1>
<div class="kb-item">apple</div>
<div class="kb-item">banana</div>
</div>
<div class="kb-items">
<h1>vegetables</h1>
<div class="kb-item">lettuce</div>
<div class="kb-item">onion</div>
<div class="kb-item">carrot</div>
</div>