使用jquery进行多数据属性过滤

时间:2018-04-12 18:11:25

标签: jquery

我遇到了一个问题,我想使用jquery find过滤多个数据属性。

我有以下dom元素:

<span data-selected="no" data-position="y2016m2" data-type="project" data-workplaceid="113" data-languageid="5" data-industryid="3" data-id="pr15" class="month-item dark-text timeline-item project-item"></span>

<span data-selected="no" data-position="y2016m5" data-type="project" data-workplaceid="113" data-languageid="1" data-industryid="5" data-id="pr22" class="month-item dark-text timeline-item project-item"></span>

<span data-selected="no" data-position="y2016m6" data-type="project" data-workplaceid="113" data-languageid="3" data-industryid="3" data-id="pr13" class="month-item dark-text timeline-item project-item"></span>

<span data-selected="no" data-position="y2017m2" data-type="project" data-workplaceid="113" data-languageid="1" data-industryid="1" data-id="pr1" class="month-item dark-text timeline-item project-item"></span>

<span data-selected="no" data-position="y2018m4" data-type="project" data-workplaceid="113" data-languageid="5" data-industryid="2" data-id="pr75" class="month-item dark-text timeline-item project-item"></span>

我正在尝试使用以下否定语句来删除所有不需要的项目:

$('.timeline').find('.project-item[data-languageid!=5][data-industryid!=3]');

此语句的问题及其作为OR语句而不是AND语句的行为。因此,当我运行这行代码时,我得到列表中的第一个元素,第三个元素,但第三个元素是data-industryid = 3,所以它不应该存在。

我的问题是双数据属性语句过滤作为OR语句或作为AND使我在这里看到它作为OR语句起作用,因为id是相同的。

非常感谢任何建议。 谢谢 特丽克丝。

1 个答案:

答案 0 :(得分:1)

使用.not():not()

$('.timeline').find('.project-item:not([data-languageid=5][data-industryid=3])');

.not

$('.timeline').find('.project-item').not('[data-languageid=5][data-industryid=3]');

您也可以使用:not():not()

 $('.timeline').find('.project-item:not([data-languageid=5]):not([data-industryid=3])');