2013-08-23 38 views
1

除了屬性的所有元素jQuery選擇我有一個網頁的數組:在一個陣列

var idlist = ['ID1', 'ID2', 'ID3']; 

此數組在我的HTML與這些ID引用<div>秒。這些<div>中的每一個也具有類別.tabPage

我想寫一個選擇器,目標是所有div.tabPage元素,除了在我的數組中有一個ID。我在jQuery文檔中找到了.not()函數,但是我怎麼能爲多個值做到這一點?

+1

使用多選擇器選擇器,它今天似乎很常見。 '「#id,#id2,#id3」' –

+0

http://api.jquery.com/multiple-selector/ –

+0

所以,像:$('div.tabPage:not(「#ID1」),div.tabPage :不是(「#ID2」)等)? – Paul

回答

5

我建議:

$('div.tabPage').not('#' + idlist.join(', #')); 

JS Fiddle demo

如果你喜歡一個更詳細的方法,你也可以使用過濾器(這將要麼刪除,或保留,從選擇的元素):

$('div.tabPage').filter(function(){ 
    return idlist.indexOf(this.id) === -1; 
}).addClass('jQueryFound'); 

JS Fiddle demo

參考文獻:

0

我想可能更清楚,如果不選擇完成,但在執行代碼的身體:

var ignoreList = ['foo', 'bar']; 
$('.tabPage').each(function(){ 
    if(ignoreList.indexOf(this.id) > -1) return; 

    // code 
}); 
0

試試這個

$('div:not(#' + ids.join(',#')+')').end().click(function() { alert('hi'); }); 

http://jsfiddle.net/Jfmrn/

+0

我不知道爲什麼['end()'](http://api.jquery.com/end/)在那裏(因爲你只使用了一個選擇器(並沒有後續的過濾,據我所知) ),但更重要的是,您的演示似乎不起作用:*每個*'div'元素在單擊時生成一個'alert()'。這似乎違背了這個問題的要求。 –