2012-07-27 170 views
0

在显示项目列表的模式窗体上,我想标记已经选择的窗体。有没有办法一次选择多个元素提供一个ID数组?通过data-id的jQuery选择器 - 从数组中选择许多ID

例子:

$('.searchable').find('[role~=item]') 

回报

<tr role=​"item character" data-id=​"1">​…​</tr>​ 
<tr role=​"item character" data-id=​"2">​…​</tr>​ 
<tr role=​"item character" data-id=​"3">​…​</tr>​ 
<tr role=​"item character" data-id=​"4">​…​</tr>​ 

但我想,以纪念那些已经选择加入他们 “选择” 类的项目。我得到了数组中的选定项目。例如:数组= [1,3]

有一种方法来这样做:

$('.searchable').find('[role~=item][data-id=array') 
+0

我不确定我是否明白你想要做什么。你想选择多个属性值吗?或者你想选择一个类+属性值?或者是其他东西?或者 - 啊! - 你想对包含数组中某个元素的属性值进行选择吗? – 2012-07-27 15:43:33

+0

@AndersHolmström我想将类“.selected”添加到所有具有属性data-id等于数组元素的项目。在这种情况下,到第一项和第三项 – dcarneiro 2012-07-27 15:55:01

+0

啊。那么就我所知,没有办法用单个select语句来做到这一点 - 你必须以某种方式遍历数组。请参阅下面的答案。 :) – 2012-07-27 15:55:49

回答

2

可以通过使用每经过阵列和在阵列中的每个元件执行的操作,

jQuery.each(array, function(i, item) { 
    $(item).data("id"); 
}; 

,或者您中央社尝试一些像这样的事情,

var filtered = $('.searchable').find(function(){ 
    if(array.indexOf(this.val(), 0) 
     return $(this); 
}); 
1
var Array = [1,3], 
    elems; 

$.each(Array, function(i,e) { 
    elems.add($('[role~=item][data-id="'+e+'"]', '.searchable')); 
}); 

elems.addClass('highlight');