将href添加到现有的href

时间:2017-05-31 14:55:48

标签: javascript jquery

我正在抓一个新闻网站,他们也提供了整篇文章的链接,但是这些链接的href看起来像这样:

/news-features/8/news-headlines/103818/these-pupils-deserve-better

因此,我需要动态添加链接:

http://www.oldham-chronicle.co.uk

所以整个链接将是:

http://www.oldham-chronicle.co.uk/news-features/8/news-headlines/103818/these-pupils-deserve-better

正如您可以假设有超过1篇文章,但我需要添加的链接部分是相同的。因此,我需要添加它。

目前我有:

$("a").each(function(){
    this.href=this.href.replace("http://www.oldham-chronicle.co.uk");
});

但是我的链接看起来像这样:

href="http://localhost/news-features/8/news-headlines/103818/these-pupils-deserve-better"

哪个错了,怎么解决?

5 个答案:

答案 0 :(得分:2)

请改为尝试:

var base = "http://www.oldham-chronicle.co.uk/";
$('a').each(function(index, element) {
  element.href = element.href.replace("http://localhost/", base);
})

基本上,这会循环遍历每个元素,并预先添加您想要的硬编码URL。 (如果需要,你也可以在没有jquery的情况下这样做)

编辑:误解了原始问题,从评论中更新以替换开头的网址(使用简单的匹配器)

答案 1 :(得分:0)

这对你有用

$("a").each(function(){
     if ($(this).attr('href') != null) {
        var newUrl = $(this).attr('href').replace("http://localhost","http://www.oldham-chronicle.co.uk");
        if (newUrl.indexOf("http:")==-1) {newUrl  = "http://www.oldham-chronicle.co.uk"+newUrl; }
        $(this).attr('href', 
         );
     }
});

答案 2 :(得分:0)

对于使用现代浏览器的读者,您只需使用the hostname property

$('a').each((i, e) => e.hostname = 'www.oldham-chronicle.co.uk');

请注意,这在Internet Explorer和其他一些浏览器中不起作用,如链接页面上所示。此示例还使用箭头函数,这些函数在某些旧版浏览器中不受支持。

答案 3 :(得分:0)

您可以通过执行以下操作来避免使用.each

$('a.link').attr('href', function(i, v){
  console.log("replaced href:");
  console.log(v);
  return v.replace('http://localhost', function() {
      return 'www.oldham-chronicle.co.uk';
  })
});

// just to show new href
$('a.link').attr('href', function(i, v) {
    console.log("new href:");
	console.log(v);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a class="link" href="http://localhost/news-features/8/news-headlines/103818/these-pupils-deserve-better">Link1</a>
<a class="link" href="http://localhost/news-features/7/news-headlines/103818/these-pupils-deserve-better">Link2</a>

感谢Denys answer here

答案 4 :(得分:-4)

试试这个:

$("a").each(function(){
 $(this).attr("href", "http://localhost/news-features/8/news-headlines/103818/these-pupils-deserve-better");
});