所以我已经编写了以下代码来遍历每个Anchor,获取它的href,如果它包含旧地址,则尝试用新的地址替换旧的base。虽然这个代码与网站之前很明显存在问题,但我需要一个快速而肮脏的解决方案来解决这个问题,所以这个代码就是我想要的。
所以,下面的代码不起作用。 .Replace可能需要一个完整的匹配,所以它会在“foo is good”中找到“foo”而在“fooIsGood”中找不到“foo”。
$('a').each(function() {
var addressSwitch = $(this).attr("href");
if (addressSwitch){
var test = addressSwitch.indexOf("http://www.oldaddress.com");
if ( test == 0){
addressSwitch.replace("http://www.oldaddress.com/", "www.newaddress.com");
$(this).attr("href" , addressSwitch);
}
}
});
那么,有什么用呢?
提前致谢!
答案 0 :(得分:2)
.replace()
工作正常,但您不是分配替换值,它必须是:
addressSwitch = addressSwitch.replace("http://www.oldaddress.com/", "www.newaddress.com");
请记住,.replace()
不会更改原始字符串,而是会返回一个替换值的新字符串。
请记住.attr()
也需要一个函数,因此您可以将代码缩小到这个:
$('a[href^="http://www.oldaddress.com"]').attr("href", function(i, href) {
return href.replace("http://www.oldaddress.com/", "www.newaddress.com");
});
答案 1 :(得分:0)
将它们都切换为小写以进行比较,然后使用newvalue及其前后长度的newvalue + substring。 e.g。
$('a').each(function() {
var replacer = "http://www.oldaddress.com";
var addressSwitch = $(this).attr("href");
if (addressSwitch){
var test = addressSwitch.toLowerCase().indexOf(replacer);
if ( test == 0){
addressSwitch = replacer + addressSwitch.subString(replacer.length);
$(this).attr("href" , addressSwitch);
}
}
});