将文本字符串插入href链接(特定位置)

时间:2015-11-11 15:11:36

标签: javascript jquery html

我在页面上有链接,我想添加ID Anchor。这段代码我的工作正常:

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

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:3)

捎带Rick Hitchcock的回答,但是没有正则表达式:

&#13;
&#13;
$('#main > div > ul > li > a').each(function(index, elem) {
  elem.hash = '#myAnchor' + elem.hash;
});
&#13;
<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>
&#13;
&#13;
&#13;

答案 2 :(得分: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';
        }
    });
};