2012-12-05 91 views
0

目前,我有以下的jQuery snipplet將在一個特定的div找到圖像,並排除那些與特定類:過濾掉圖像的文件名

var postImgs = $('#primary img'); 
var classes = new Array(".skip", ".block", ".ignore");  

postImgs.each(function(){ 
    if(!$(this).is(classes.join(", "))) { 
     //Do Something 
    } 
}); 

我還需要做的是檢查有特定的文件名稱不適用於該功能。所以,我想的東西......但它沒有工作:

postImgs.not('img[src$="uniquefile.jpg"]').each(function(){ } 

即使是這樣,我寧願喜歡能夠提供文件名的數組,就像我可以和我的班。

那麼除了保留我已經使用的類過濾器外,我怎樣才能指定一個文件名數組跳過?這樣,我就可以做這樣的事情:

var fileNames = new Array("uniquefile.jpg", "somename.png", "anotherfile.gif"); 

回答

0

你可以做這樣的事情在選擇

var filenames = ['google.com','msn.com','yahoo.com']; 

$('img').not('[src$="' + filenames.join('"],[src$="') + '"]'); // <-- gets images that are not specified in array 

http://jsfiddle.net/DF9rx/

0
var fileNames = new Array("uniquefile.jpg", "somename.png", "anotherfile.gif"); 

postImgs.each(function (idx, elem){ 
    var ok = true; 
    $.each(fileNames, function(i, filename) { 
     if (elem.src.indexOf(filename) != -1) ok = false; 
    }); 

    if (ok) { 
     //image file is not excluded, do something 
    } 

}); 

,或者您可以過濾選擇:

var fileNames = new Array("uniquefile.jpg", "somename.png", "anotherfile.gif"); 

postImgs.filter(function() { 
    return $.inArray(this.src, fileNames); //requires exact match 
});