嘿嘿
所以我做了script
,轮流正常anchor href's
进入id hrefs
(例如:/10001-Link1
到#Link1
)。现在,只要您为每个anchor link
要转换为id link
. 但我想让它不那么静态。因此,anchor link
脚本应该anchor href
自动从当前中获取正确的单词,而不是为每个单独的代码重复代码,只需将单词替换为 url 的其余部分,并#
在它之前放置一个。
所以这是仅适用于第一个 URL 的代码:
$(document).ready(function() {
$('li a').each(function(){
var oldUrl = $(this).attr("href");
var newUrl = oldUrl.replace("/10001-Link1", "#Link1");
$(this).attr("href", newUrl);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
<li><a href="/10001-Link1">Link 1</a></li>
<li><a href="/10002-Link2">Link 2</a></li>
<li><a href="/10003-Link3">Link 3</a></li>
<li><a href="/10004-Link4">Link 4</a></li>
<li><a href="/10005-Link5">Link 5</a></li>
</ul>
现在我已经为这个问题寻找了解决方案。但我发现的唯一一件事是我无法真正理解的一行代码。
$('a[href^="http://stackoverflow.com"]')
.each(function()
{
this.href = this.href.replace(/^http:\/\/beta\.stackoverflow\.com/,
'http://stackoverflow.com');
});
我得到的第一部分是每个以http://stackoverflow.com开头的 href都得到了一个.each
函数。但我不知道该部分的所有/
' 和\
' 是.replace
什么意思。也许这根本不是解决我问题的正确方法?
您可以为此使用正则表达式。
.replace(/\/[0-9]{5}-/, "");
用空字符串替换正则表达式匹配。只需#
在它前面添加一个,你就会得到想要的结果。
正则表达式的工作原理如下:
\/
寻找一个/
(需要转义)。
[0-9]{5}
寻找 5 个数字。
-
寻找(你永远不会相信)一个-
.
$(document).ready(function() {
$('li a').each(function(){
var oldUrl = $(this).attr("href");
var newUrl = "#" + oldUrl.replace(/\/[0-9]{5}-/, "");
$(this).attr("href", newUrl);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
<li><a href="/10001-Link1">Link 1</a></li>
<li><a href="/10002-Link2">Link 2</a></li>
<li><a href="/10003-Link3">Link 3</a></li>
<li><a href="/10004-Link4">Link 4</a></li>
<li><a href="/10005-Link5">Link 5</a></li>
</ul>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句