用jQuery、正则表达式替换href

Replace href with jQuery, regular expression

本文关键字:替换 href 正则表达式 jQuery      更新时间:2023-09-26

我有一堆需要替换的href链接:

<a id="link" href="http://localhost:8091/tabid/99/catid/8/page1.aspx">Page1</a>
<a id="link" href="http://localhost:8091/tabid/98/catid/8/page1.aspx">Page1</a>
<a id="link" href="http://localhost:8091/tabid/97/catid/8/page1.aspx">Page1</a>

href应该改为:"http://localhost: 8091/衰弱的/ 1 /page1 . aspx catid/8/发布地址就"

通过搜索我发现:

$(document).ready(function () {
    $("#link").each(function () {
        this.href = this.href.replace("99", "1");
    });
});

这个应该可以了。但是,它只替换其中一个链接。有人能帮我解释一下正则表达式吗?我需要将tabid/**/catid中的所有数字更改为"1"。

您的问题是使用id访问多个元素:根据规范,id 在文档中必须是唯一的。使用id会导致JavaScript返回它找到的第一个元素,而不是继续搜索整个文档(因为必须只有一个)。

若要为多个元素使用相同的名称,请使用class:

<a class="link" href="http://localhost:8091/tabid/**99**/catid/8/page1.aspx">Page1</a>
<a class="link" href="http://localhost:8091/tabid/**98**/catid/8/page1.aspx">Page1</a>
<a class="link" href="http://localhost:8091/tabid/**97**/catid/8/page1.aspx">Page1</a>

与修改jQuery:

$(document).ready(function () {
    $(".link").each(function () {
        this.href = this.href.replace("99", "1");
    });
});

id属性指定HTML元素的唯一id。在您的情况下,它们不是唯一的。尝试使用css选择器或瞄准所有"a"元素。

首先,将id改为class。其次,做如下修改:

this.href = this.href.replace(/tabid'/'d+/i, '/tabid/1');

现在它只替换tabid后面的数字,而不是字符串中任何地方的任何数字。

id在文档中是唯一的,您应该使用class来代替。