按多个数据属性元素

时间:2016-02-19 16:49:10

标签: 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>

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

$('.filterme').hide();

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

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

我想展示这个

<li class="filterme" data-type="Secondary Academy Physical KS1">item 1</li>

但它没有显示任何匹配 我可以使用一个值来处理它,但是如何检查数据属性是否包含多个值,而不是OR但是AND?

感谢

2 个答案:

答案 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
}