是否可以在jQuery中更改URL列表?

时间:2012-12-21 10:46:40

标签: jquery

我的网站有大约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的新手。

2 个答案:

答案 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)    
});​​