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 に答える