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 (){ }

即便如此,我更愿意提供一个文件名数组,就像我的 classes 一样。

那么,除了保留我已经使用的类过滤器之外,我还如何指定要跳过的文件名数组呢?这样我就可以做这样的事情:

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

2 回答 2

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
});
于 2012-12-05T20:08:31.250 回答
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/

于 2012-12-05T20:11:07.890 回答