我的网站有大约20个我想要更改的内部链接。
jQuery是否可以在它们出现时更改它们?
因此,例如,如果网站输出:
<a href="http://www.mysite.com/link1">Link</a> or <a href="mysite.com/link2">Another</a>
jQuery将其更改为:
<a href="http://www.othersite.com/link">Link</a> or <a href="www.externalsite.com/link-another">Another</a>
很抱歉,如果这是一个愚蠢的问题,我是JS / jQuery的新手。
答案 0 :(得分:2)
这应该可以解决问题:
//Specify what you want to replace with what, here:
var changes = [
['http://www.mysite.com/link1', 'http://www.othersite.com/link'],
['http://www.mysite.com/somepage.php', 'http://www.othersite.com/anotherpage.php'],
['http://www.mysite.com', 'http://www.anothersite.com']
]
$(function(){
$('a').each(function() {
var href = this.href;
for(var i = 0; i < changes.length; i++){
if(href == changes[i][0]){
href = changes[i][1];
}
}
this.href = href;
});
});
答案 1 :(得分:1)
尝试这样的事情。 Here is a Live Demo
$('a').each(function(){
var link = $(this).attr('href');
link = link.replace('www.mysite.com', 'www.othersite.com');
link = link.replace('mysite.com', 'http://www.externalsite.com');
$(this).attr('href', link)
});
由于您似乎想要替换当前链接的特定链接,因此您需要对其进行调整以处理所有特定更改。此示例simple处理域文本替换。从您提供的示例中收集特定的“规则”很困难。
如果你只有一些链接,也许对替换进行硬编码会更好。
$('a').each(function(){
var link = $(this).attr('href');
var newLink = null;
if (link == 'http://www.mysite.com/link1')
newLink ='http://www.othersite.com/link';
else if (link == 'mysite.com/link2')
newLink ='www.externalsite.com/link-another';
if (newLink) $(this).attr('href', newLink)
});