jQuery如果img src等于然后每个img应用类名

时间:2012-11-26 22:10:11

标签: jquery

基本上我的img src看起来像这样,并且有类名.pic:

img/folderA/..
img/folderB/..
img/folderC/..
..
img/folderZ/..

我希望每个img示例添加类名如果imc src等于/ folderA /然后添加img类名'thisisA'等等,我尝试了类似这样的东西,但它不会有任何帮助?

    $('.pic').each(function(i){
        var imgSrc = this.src;
        if(imgSrc.indexOf('/folderA/')){
            $(this).addClass('thisisA');
        }
            else if(imgSrc.indexOf('/folderB/')){
            $(this).addClass('thisisB');
        }
});

3 个答案:

答案 0 :(得分:2)

$('.pic').each(function(i){
        var imgSrc = this.src;
        if(imgSrc.indexOf('/folderA/') >= 0){
            $(this).addClass('thisisA');
        }
            else if(imgSrc.indexOf('/folderB/') >= 0){
            $(this).addClass('thisisB');
        }
});
当没有匹配时,

indexOf返回-1,if将0以外的任何内容视为“真”。

答案 1 :(得分:0)

怎么样:

http://jsfiddle.net/nZCre/1/

 $('.pic').each(function(i){
        var imgSrc = this.src;
        if(imgSrc.indexOf('/folderA/') > -1){
            $(this).addClass('thisisA');
        }
            else if(imgSrc.indexOf('/folderB/')){
            $(this).addClass('thisisB');
        }
});​

如果indexOf返回0则它将为false,这可能是发生的事情: if(0){dosomething()}永远不会dosomething();

答案 2 :(得分:0)

indexOf方法返回字符串中您要查找的位置。这可能会导致一些奇怪的问题。例如:'hello'.indexOf('h');将返回0,因为h位于字符串的第一个位置(索引0)。

这意味着,如果你这样测试:

var str = 'hello';
if(str.indexOf('h')) //indexOf returns 0 which is evaluated as false
  alert('hello');
else
  alert('goodbye');

即使你期待你好,你也会一直警告你。

为了帮助解决此问题,如果在字符串中找不到您要查找的内容,indexOf将返回-1。所以你需要检查一下。所以使用你的代码就像是:

$('.pic').each(function(i){
    var imgSrc = this.src;
    if(imgSrc.indexOf('/folderA/') != -1){
        $(this).addClass('thisisA');
    }
    else if(imgSrc.indexOf('/folderB/') != -1){
        $(this).addClass('thisisB');
    }
});