我在页面上有链接,我想添加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
答案 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的回答,但是没有正则表达式:
$('#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;
答案 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';
}
});
};