按多个数据属性元素过滤

use*_*356 4 jquery attributes

我有一些列表项,我想使用选择来过滤数据属性是否具有所有选择选项值,而不仅仅是它具有一个或另一个。

<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>
Run Code Online (Sandbox Code Playgroud)

我有一些选择框触发 onchange 事件,该事件首先隐藏所有项目

$('.filterme').hide();
Run Code Online (Sandbox Code Playgroud)

然后我想显示数据属性是否包含传递给它的所有值。我试过

$(".filterme[data-type*='" + Secondary && Physical && KS1 + "']").show();
Run Code Online (Sandbox Code Playgroud)

我想展示这个

<li class="filterme" data-type="Secondary Academy Physical KS1">item 1</li>
Run Code Online (Sandbox Code Playgroud)

但它没有显示任何匹配项,我可以让它仅使用一个值,但如何检查数据属性是否包含多个值,而不是“或”而是“与”?

谢谢

oma*_*ari 6

另一种选择是使用多个选择器,然后对其进行过滤。

项目 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
}
Run Code Online (Sandbox Code Playgroud)