给出以下标记
<div class="group-one">
<span data-id="1">
<span data-id="2">
<span data-id="3">
</div>
<div class="group-two">
<span data-id="1">
<span data-id="2">
<span data-id="3">
</div>
我想使用data-id
因此,如果我有ids=[1,2]
,我希望结果是两个节点对应于数组中的一个节点,在其中一个组内。
ids=[1,2]
nodes = $(".group-one").children();
#nice way of filtering the nodes using ids array. With Jquery.filter or Underscore
我知道我可以通过所有子节点进行迭代,并比较每个节点data-id
。但是我想知道是否可以通过仅使用选择器来实现这一点,或者使用其他一些解决方案。
谢谢!
答案 0 :(得分:1)
只是根据数据属性过滤?
var ids=[1,2];
$('div span').filter(function() {
return ids.indexOf( $(this).data('id') ) != -1;
});
答案 1 :(得分:1)
仅使用jQuery选择器的解决方案:
var filteredNodes = nodes.filter(function() {
// Attributes are strings, so you have to convert int.
var i = parseInt($(this).attr('data-id'));
return $.inArray(i, ids) >= 0;
});