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 回答