如何获取两个jquery对象的交集

时间:2013-09-23 18:37:40

标签: jquery

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

<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"]');

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

2 个答案:

答案 0 :(得分:13)

联:

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

这将获得所有div [data-category]属性为mycategory [data-features]属性为{{1} }。

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

来完成

路口:

myfeature

这将获得所有div 两者 $('div[data-category="mycategory"][data-features="myfeature"]')... 属性为[data-category] mycategory属性为{{1} }。

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

来完成

答案 1 :(得分:2)

$.fn.intersect=function(jq){
  return $(this).filter(jq);
}

然后:

$cats.intersect($features);