我正在更新这个超级旧的医疗网站,并试图找出一种方法来处理数百个hrefs,每个hrefs都有一个文件加上#hash值,就像这样......
<a href="mind.html#cretinism" target="_top">CRETINISM</a>
<a href="brain.html#delirium" target="_top">DELIRIUM</a>
<a href="body-mind.html#dementia" target="_top">DEMENTIA</a>
<a href="body.html#emotions" target="_top">EMOTIONS</a>
<a href="chem.html#fears" target="_top">FEARS</a>
我要做的是保持哈希值,并删除文档,请参阅。因此,我最终想要的是:
<a href="#cretinism" target="_top">CRETINISM</a>
<a href="#delirium" target="_top">DELIRIUM</a>
<a href="#dementia" target="_top">DEMENTIA</a>
<a href="#emotions" target="_top">EMOTIONS</a>
<a href="#fears" target="_top">FEARS</a>
或者,可选地,为了使其成为onclick,它会忽略文档并仅响应哈希值。如,
// pseudo code, obviously
$(document).on('click', 'a', function(e){
e.preventDefault();
$(this).attr('href').sliceOffEveryCharBeforeThe('#');
});
呼。
答案 0 :(得分:1)
这对于jQuery来说相当简单,尽管最好的解决方案是尽可能在服务器上进行调整。
// loop through all "a" in page
$('a').attr('href', function(_, oldHref){
// if it has a hash use that, if not use old href
return this.hash ? this.hash : oldHref;
});
的 DEMO 强>
答案 1 :(得分:0)
我的建议是:
$(document).on('click', 'a', function(e){
e.preventDefault();
var obj = $(this);
var newvalue = obj.attr('href').replace(/[^#]*/, '');
obj.attr('href', newvalue);
$('#result').text(this.outerHTML);
});
<script src="http://code.jquery.com/jquery-1.11.3.js"></script>
<a href="mind.html#cretinism" target="_top">CRETINISM</a>
<a href="brain.html#delirium" target="_top">DELIRIUM</a>
<a href="body-mind.html#dementia" target="_top">DEMENTIA</a>
<a href="body.html#emotions" target="_top">EMOTIONS</a>
<a href="chem.html#fears" target="_top">FEARS</a>
<p id="result"></p>