jQuery更改页面中的所有链接

时间:2010-03-30 06:20:33

标签: jquery

 $(function(){
            $('a').each(function(){
                        var x=this.href;
                        this.href="www.somesitename.com/filter"+this.href;
                  });
         });

我写了上面的jQuery脚本,将一些网站名称附加到页面中的所有链接,但它没有按预期工作。

6 个答案:

答案 0 :(得分:29)

您可能需要添加http://

$(function(){
    $('a').each(function() {
        $(this).attr('href', 'http://www.somesitename.com/filter' + this.href);
    });
});

答案 1 :(得分:13)

我想知道为什么你会使用jQuery来做这样的基本行为......

这就是tag BASE适用于

的原因
  

在页面上为所有链接指定默认网址默认目标

<head>
    <base href="http://www.w3schools.com/images/" />
    <base target="_blank" />
</head>

<body>
    <img src="stickman.gif" />
    <a href="http://www.w3schools.com">W3Schools</a>
</body>

不要复杂的简单!


<强>加入

来自Sitepoint

  

如果所有相对链接表单提交转到同一位置,则基本元素对您有用。

答案 2 :(得分:1)

进一步改进达林的解决方案:

$(function(){
    $('a').attr('href', (n, old) => 'http://www.somesitename.com/filter' + old);
});

有一件事要注意,如果是 .each ,this.href会生成一个绝对的完全限定网址(例如: http://localhost:8888/mylink ),因此结果可能会像: www.somesitename.com/filter / http://localhost:8888/mylink 。解决方案是通过jQuery获取属性值:$(this).attr(&#39; href&#39;),它正确地产生 / mylink

答案 3 :(得分:0)

在脑中定义一个基本标签,然后在需要时更新它的href属性。

<base href="http://www.some-domain.com/" />
$("base").attr("href","http://www.some-other-domain.com/");

答案 4 :(得分:0)

以下是我习惯做的事情

我删除了每个博客/&#39;从页面上的href可以更改链接或更新它

$('a').each(function(){ var updated_link = $(this).attr('href').replace('blog/', ''); $(this).attr('href', updated_link); });

我已经使用replace函数来更新url的一部分。在你的情况下你可以更新它

答案 5 :(得分:-2)

您可能需要使用jQuery具有http://api.jquery.com/append/

的append()函数