0

我有一个网站,里面有大约 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 的新手。

4

2 回答 2

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;
    });
});
于 2012-12-21T10:49:51.503 回答
1

尝试这样的事情。这是一个现场演示

​$​('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)    
});​​

由于您似乎有非常特定的链接要替换当前链接,因此您需要对其进行调整以处理所有特定更改。此示例简单处理域文本替换。从您提供的示例中很难收集特定的“规则”。

如果您只有少量链接,那么对替换进行硬编码可能会更好。

​$​('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)    
});​​
于 2012-12-21T10:54:18.330 回答