0

次のコードは、特定の div 内に指定された URL を持つすべての href を検索します。次に、ドメインに追加して絶対パスを作成します。

$('#landing-page').find('a[href^="/catalog.php"]').each(function(element, index){
    var href = $(this).attr('href');
    href = href.replace('', 'http://www.mydomain.com');
    $(this).attr('href', href);
});
$('#landing-page').find('a[href^="/upgrade"]').each(function(element, index){
    var href = $(this).attr('href');
    href = href.replace('', 'http://www.mydomain.com');
    $(this).attr('href', href);
});

このフィドルのリンクにカーソルを合わせると、実際の動作を確認できます。

私の次のステップは、よりダイナミックにすることですが、苦労しています。配列を作成してからループさせる必要があると思います。これが私が始めたものです...

var foo = {
    '/catalog.php',
    '/upgrade'
};

$('#landing-page').find('a[href^="' + foo + '"]').each(function(element, index){
    var href = $(this).attr('href');
    if (foo = href) {
        href = href.replace('', 'http://www.mydomain.com');
        $(this).attr('href', href);
    } 
});

これがフィドルです。

私はそれを機能させることができないようです。また、すべてのリンクにドメインが追加され、新しい問題が発生する場合もあります。どんな助けでも大歓迎です。ありがとう

4

2 に答える 2

0
var foo = {
    '/catalog.php':'http://www.mydomain.com',
    '/upgrade':'http://www.mydomain2.com'
};
$.each(foo,function (search,prefix) {
    $('#landing-page').find('a[href^="' + search + '"]').each(function(element, index){
        $(this).attr('href',prefix + $(this).attr('href'));
    });
});

http://jsfiddle.net/U9RXL/1/

于 2013-08-14T13:31:11.753 に答える
0

まず、foo変数はオブジェクトではなく配列にする必要があります。次に、その配列をループして、各値を個別にテストする必要があります。これを試して:

var foo = [
    '/catalog.php',
    '/upgrade'];

$.each(foo, function (i, value) {
    $('#landing-page').find('a[href^="' + value + '"]').attr('href', function(i, value) {
        return 'http://www.mydomain.com' + value;
    });
});

更新されたフィドル

これはかなり奇妙な要件のようです。ソースを直接変更できませんか?それともbase hrefメタタグを使用しますか?

于 2013-08-14T13:32:21.760 に答える