使用jquery在页面加载上转换超链接

时间:2014-06-11 10:38:39

标签: javascript jquery html regex

我需要将所有链接(href值)转换为特定格式

例如 - 如果网页有链接http://www.exampledomain.com我想将其href转换为http://url.com/xyz?http://www.example.com

以下是我用于此任务的jquery(请注意,我是jquery的新手)

$( document ).ready(function() {  
    $('a').each(function() {
        var value = $(this).attr('href');
        $(this).attr('href','http://url.com/xyz?'+value);
    });
});

但是上面的脚本正在转换网站的所有链接,我的导航链接也会发生变化。 我们如何过滤以仅更改包含“http”和“www”的链接的href?

我知道某种正则表达式可用于此目的。提前谢谢!

5 个答案:

答案 0 :(得分:1)

我认为你应该提取所有内部链接。

您可以检查值是否符合您的条件(http://www):

   $( document ).ready(function() {  
     $('a').each(function() {
     var value = $(this).attr('href');
     if(value.indexOf("http:\\www") > -1 ){
         $(this).attr('href','http://url.com/xyz?'+value);
     }

   });

但最好提取所有内部链接:

var myHost = new RegExp(location.host);

$('a').each(function(){
   var value = $(this).attr('href');
   if(!(myHost.test(value))){
     $(this).attr('href','http://url.com/xyz?'+value);
   }
});

最后也是更好的选择是只接受外部链接:(如果你不需要对内部做任何事情)

 $( document ).ready(function() {  
    $("a[href^='http']").each(function() {
     var value = $(this).attr('href');
     $(this).attr('href','http://url.com/xyz?'+value);
    }

  });

答案 1 :(得分:1)

您可以检查链接是外部链接还是内部链接,然后您可以添加额外的工作。

$( document ).ready(function() {  
 $('a').each(function() {
 var value = $(this).attr('href');
  if($(this[href^='http'])
  {
     $(this).attr('href','http://url.com/xyz?'+value);
   }
  });
});

答案 2 :(得分:1)

您可以尝试以下代码

$( document ).ready(function() {   
    $('a').each(function() {
        var value = $(this).attr('href');
        if(value.match("http://www.*"))
        {
            $(this).attr('href','http://url.com/xyz?'+value);
        }
    });
});

您必须确保没有包含

的导航链接
"http://www" 

在他们中间。使用您不想替换href的相对链接。

或者您可以为要修改的所有锚标签提供一个类

答案 3 :(得分:1)

<强> Demo Fiddle 使用元素检查器检查锚标记的href

$('a').each(function() {
   var a = new RegExp('/' + window.location.host + '/');
   if(!a.test(this.href)) {
       var value = $(this).attr('href');
      $(this).attr('href','http://url.com/xyz?'+value);
   }
});  

使用window.location.hosttest

  

在CSS-Tricks.com上从this article修改

答案 4 :(得分:1)

一种方法:

// selects all 'a' elements:
$('a')
// sets the 'href' attribute, using the anonymous function to iterate over each
// 'a' element:
.attr('href', function(i,oldhref){
    // i:  the index of the current element in the returned collection,
    // oldhref: the value of the 'href' before manipulation by the function.
    // if 'exampledomain.com' features in the hostname of the link we 
    // manipulate the 'href' as required, otherwise we simply set the 'href'
    // to its original value:
    return this.hostname.indexOf('exampledomain.com') > -1 ? 'www.url.com/xyz?' + oldhref : oldhref;
});

JS Fiddle demo

参考文献: