Я делаю фильтр по категории
моя проблема, если я задаю атрибут данных с помощью (cat1
, cat2
)
, он не отображается
1-е решение: Я пытался с помощью метода include, но проблема у меня есть два слова в data-attribute
2-е решение: Я пытался с индексом проблемы в условие, что он добавляет скрытый для всех div
var ext = ["cat1", "cat2", "cat3", "cat1"];
$("#ddlViewBy").on("change", function(e) {
var name = $("#ddlViewBy option:selected").text();
const divs = document.querySelectorAll('.full-image');
divs.forEach(div => {
div.classList.remove('hidden');
});
if (name == "Categorie") {
divs.forEach(div => {
length =ext.length;
while(length--) {
if (div.dataset['image'].indexOf(ext[length])!=-1) {
div.classList.add("show");
}
else {
div.classList.add("hidden");
}
}
});
}
});
.show {
display: block;
}
.hidden {
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="ddlViewBy">
<option value="1">all</option>
<option value="1">Categorie 1</option>
</select>
<div class="full-image" data-id="2" data-image="cat1">aa<img src="" />
</div>
<div class="full-image" data-id="3" data-image="cat1">bb<img src="" />
</div>
<div class="full-image" data-id="4" data-image="cat1">cc<img src="" />
</div>
<div class="full-image" data-id="5" data-image="cat1 cat2">dd<img src="" />
</div>
<div class="full-image" data-id="5" data-image="cat1,cat2">oo<img src="" />
</div>
<div class="full-image" data-id="6" data-image="cat1">ccs<img src="" />
</div>
<div class="full-image" data-id="7" data-image="cat1">yy<img src="" />
</div>