-2

我需要在一个返回多值的函数中创建一个 if 语句。我试过这个,但它不工作。

a(this).attr('src', function(i, current){
    if ( i == 'http://www.old.com'){
        return current.replace('http://www.old.com','http://www.new.com');
    }
    else if ( i == 'http://www.older.com'){
        return current.replace('http://www.older.com','http://www.new.com');
    }
    else ();
});
4

2 回答 2

3

.attrjQuery 的基于回调的函数的格式是

.attr( attributeName, function(index, attr) )

您的if语句使用第一个回调参数 ,i它始终是索引号,但您似乎希望它们是字符串。但是,每个属性的字符串值都在第二个回调参数中。您可能打算比较第二个参数current.

此外(根据您所做的评论),您实际上并不想完全匹配old.com,您想查看 URL 是否以 开头http://www.old.com

if ( current.indexOf('http://www.old.com') == 0) { ...
于 2013-01-07T17:01:09.133 回答
1

您正在测试 i 然后替换当前。除非 current 和 i 相同,否则您可能会遇到错误的条件而不是替换。else() 也是不正确和不必要的。

a(this).attr('src', function(index, current){
    if ( current == 'http://www.old.com'){
        return 'http://www.new.com';
    }
    else if ( current == 'http://www.older.com'){
        return 'http://www.new.com';
    }
});
编辑删除替换,谢谢@wirey
于 2013-01-07T17:03:35.967 回答