【发布时间】:2021-12-16 11:10:27
【问题描述】:
我有一个页面,其中包含从 csv 文件生成的部分(在 Jekyll 中,使用液体)。在本节中,我有带有图像和描述的单个 div。我需要找到适合特定描述的每个 div。
<div class="row">
{% for item in site.data.items %}
<div class="col-md-3 item {{ item.test }} {{ item.industry }} {{ item.shape }}">
<img src="source here">
<br/>
<p>{{ item.name }}</p>
<p>{{ item.description }}</p>
</div>
{% endfor %}
</div>
我为每个 div 分配了类,并从 csv 中提取了这些类。这会生成一个类似于“item sticky food pasta”的类名。
现在我想在用户选择页面上的选项时过滤显示的项目。我创建了一个数组,selectedOptions:
var selectedOptions = [];
隐藏其他项目:
$(".item").hide();
将选中的选项推送到数组中:
$('input[name="filter-input"]:checked').each(function(i){
selectedOptions.push($(this).val());
});
然后遍历选项以仅显示选择了类的项目:
for (var i = 0; i < selectedOptions.length; i++) {
$('.item').each(function() {
if ($(this).hasClass(selectedOptions[i])){
$(this).show();;
}
});
}
如果我想要每个具有任何类的项目,这很有效。但是,我想要的是一种累积效应:我只想要同时具有食物和面食类的物品。
如何显示具有所有类的每个项目?我知道我可以使用 $('.classa.classb') 之类的东西,但我不确定如何将它与这里的数组一起使用。
谢谢!
【问题讨论】:
-
“但我不确定如何将它与我在这里的数组一起使用” - 如果您没有任何需要转义才能使用的类名在 CSS 选择器中,您可以简单地
join数组元素之间加一个点,然后在结果前面再放一个点 ...
标签: jquery