我需要在一个返回多值的函数中创建一个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 ();
});
答案 0 :(得分:3)
jQuery基于回调的.attr
函数的格式是
.attr( attributeName, function(index, attr) )
您的if
语句使用第一个回调参数i
,它始终是索引号,但您似乎期望它们是字符串。但是,每个属性的字符串值都在第二个回调参数中。您可能想要比较第二个参数current
。
此外(根据您发表的评论),您实际上并不希望与old.com
完全匹配,您希望查看该网址是否以http://www.old.com
开头:
if ( current.indexOf('http://www.old.com') == 0) { ...
答案 1 :(得分:1)
你正在测试我,然后更换电流。除非当前和我相同,否则你可能会遇到错误的情况并且不会更换。另外,()是不正确和不必要的。
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