2015-11-11 129 views
0

我在页面上有链接,我想添加一个ID锚。这段代码我有工作正常:但方式插入文本字符串到href链接(特定位置)

window.onload = function() { 
    $('#main > div > ul > li > a').attr('href',function(i,str) { 
     return str + '#myAnchor'; 
    }); 
}; 

有时会因为页面设置跟踪被添加到链接,这样的结果是什么时刻发生的事情是,我得到http://www.myurl.com/#someannoyingtracking#myAnchor这不锚。我怎样才能插入锚在URL或总是之间后“的.com /”像这样:http://www.myurl.com/#myAnchor #someannoyingtracking

+0

为什么不试试'回报 '#myAnchor';'? – Rayon

+0

'anchor = $('#main> div> ul> li> a')[0] .pathname; anchor.hash ='#myHash'+ anchor.hash'(或者在一个包含多个链接的循环中) – dug

回答

1

您可以使用replace为:

window.onload = function() { 
    $('#main > div > ul > li > a').attr('href',function(i, str) { 
     if (str.indexOf('#') > -1) { 
      return str.replace('#', '#myAnchor'); 
     } else { 
      return str + '#myAnchor'; 
     } 
    }); 
}; 
+0

这工作通过保持跟踪以及包括我的#anchor ...谢谢CLyff – BoneStarr

3

这恼人的跟踪锚在年底前插入锚网址:

$('#main > div > ul > li > a').attr('href', function(i,str) { 
 
    return str.replace(/(\#.+)|($)/, '#myAnchor$1'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="main"> 
 
    <div> 
 
    <ul> 
 
     <li><a href="http://example.com/#someannoyingtracking">Has anchor</a> 
 
     <li><a href="http://example.com/">No anchor</a> 
 
    </ul> 
 
    </div>  
 
</div>

+0

Rick,我没有给你正确的答案,因为你的移除了所有的跟踪,尽管我给了你+1,因为我将在不同的页面上使用它,它可以将所有东西一起移除。谢谢你的帮助。 – BoneStarr

+0

了解,但请注意,这不会删除跟踪,它会在它之前插入锚点。所以这可能不适用于您的其他网页。 –

+0

我认为@Dug对你的问题有最好的答案。 –

3

捎带上里克·希区柯克的答案,但无正则表达式-:

$('#main > div > ul > li > a').each(function(index, elem) { 
 
    elem.hash = '#myAnchor' + elem.hash; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="main"> 
 
    <div> 
 
    <ul> 
 
     <li><a href="http://example.com/#someannoyingtracking">Has anchor</a> 
 
     <li><a href="http://example.com/">No anchor</a> 
 
    </ul> 
 
    </div>  
 
</div>

+0

比我的回答更好! –