按文件名过滤掉图像

时间:2012-12-05 20:00:00

标签: jquery

我目前有以下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");

2 个答案:

答案 0 :(得分: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
});

答案 1 :(得分: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/