2012-07-27 115 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');