jQuery使用一个datakey和多个值查找数据属性

时间:2014-12-06 19:19:04

标签: javascript jquery

对于QuickSand,我想用一个datakey和多个值来检索所有对象:

<ul>
  <li data-company="Microsoft">Steve</li>
  <li data-company="Google">Jobs</li>
  <li data-company ="Facebook">Michael</li>
  <li data-company ="Google">Richard</li>
  <li data-company ="Facebook">Tim</li>
</ul>

我如何通过数据公司Microsoft和Google(这两个值在数组中)恢复所有li项目,如下所示:

var itemes = $('ul').find('li[data-comapany={"Microsoft","Google"}]');

谢谢。

4 个答案:

答案 0 :(得分:1)

你可以过滤它:

var itemes = $('ul').find('li').filter(function(){
    return $(this).data('company').match(/Microsoft|Google/);
});

-DEMO-

要处理LI没有设置任何data-company的情况,您应该使用:

var itemes = $('ul').find('li').filter(function(){
    var data = $(this).data('company');
    return data ? data.match(/Microsoft|Google/) : null;
});

答案 1 :(得分:1)

您可以创建所需公司的数组,并检查每个li是否包含该数组中的数据:

&#13;
&#13;
var companies = ["Microsoft", "Google"];

$(function() {

  var items = $('ul li').filter(function() {
    return $.inArray($(this).data("company"), companies) > -1;
  });

  items.css({
    "position": "relative",
    "margin-left": "25px"
  });
  console.log(items);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li data-company="Microsoft">Steve</li>
  <li data-company="Google">Jobs</li>
  <li data-company="Facebook">Michael</li>
  <li data-company="Google">Richard</li>
  <li data-company="Facebook">Tim</li>
</ul>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

你可以这样做:

var companies = ['Google', 'Microsoft', 'Waffle House'];

companies.forEach(function(company, index) {
    companies[index] = "li[data-company='" + company + "']";
});

$('ul').find(companies.join(',')).css('background', 'red');

答案 3 :(得分:0)

您还可以组合选择器:

var items = $("[data-company*='Microsoft'], [data-company*='Google']");

jsFiddle