我遇到了一个问题,我想使用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是相同的。
非常感谢任何建议。 谢谢 特丽克丝。
答案 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])');