9

我有许多带有以下标记的元素:

<div id="div1" data-category="mycategory" data-feature="myfeature"></div>
<div id="div2" data-category="anothercategory" data-feature="myfeature"></div>
<div id="div3" data-category="mycategory" data-feature="myfeature"></div>
<div id="div4" data-category="mycategory" data-feature="anotherfeature"></div>

还有两个引用这些的 jQuery 选择器:

$cats = $('div[data-category="mycategory"]');
$features = $('div[data-features="myfeature"]');

如何将这两个选择器合并为一个同时引用都为真的选择器?我想最终得到一个只包含 div 的 1 和 3 但使用已经存在的 $cats 和 $features 的选择器——而不是基于标记构建另一个选择器

4

2 回答 2

14

联盟:

$('div[data-category="mycategory"], div[data-features="myfeature"]')...

这将获取属性为属性为所有div 。[data-category]mycategory [data-features]myfeature

这可以通过多个选择器来完成$one.add($two)

路口:

$('div[data-category="mycategory"][data-features="myfeature"]')...

这将获得属性[data-category]mycategory [data-features]属性为的所有div myfeature

这可以通过多个选择器来完成$one.filter($two)

于 2013-09-23T18:42:03.857 回答
3
$.fn.intersect=function(jq){
  return $(this).filter(jq);
}

然后 :

$cats.intersect($features);
于 2014-05-07T22:49:28.750 回答