如果数据属性具有所有选择选项值,我有一些我想要使用选择过滤的列表项,而不仅仅是它有一个或哪个。
<li class="filterme" data-type="Primary Academy Physical KS1">item 1</li>
<li class="filterme" data-type="Secondary Academy Physical KS2">item</li>
<li class="filterme" data-type="Secondary Academy Physical KS1">item 1</li>
<li class="filterme" data-type="Academy Physical KS1">item 1</li>
我有一些选择框触发onchange事件,该事件首先隐藏所有项目
$('.filterme').hide();
然后我想显示数据属性是否包含传递给它的所有值。我试过了
$(".filterme[data-type*='" + Secondary && Physical && KS1 + "']").show();
我想展示这个
<li class="filterme" data-type="Secondary Academy Physical KS1">item 1</li>
但它没有显示任何匹配 我可以使用一个值来处理它,但是如何检查数据属性是否包含多个值,而不是OR但是AND?
感谢
答案 0 :(得分:2)
试试这个
$(".filterme").each(function() {
if ($(this).data("type").indexOf("Secondary") > -1 && $(this).data("type").indexOf("Physical") > -1 && $(this).data("type").indexOf("KS1") > -1) {
console.log($(this).data("type"));
}
})
的 DEMO
强>
答案 1 :(得分:1)
另一个选择是使用多个选择器然后对它们进行过滤。
第1项 等
然后你可以过滤:
// data-type1 AND data-type-2
if ($(this).find('[data-type1="Primary"][data-type-2="Academy"]').length) {
//stuff
}
// data-type1 OR data-type-2
if ($(this).find('[data-type1="Primary"],[data-type-2="Academy"]').length) {
//stuff
}