用jQuery,正则表达式替换href

时间:2011-08-17 19:50:00

标签: javascript jquery regex href

我有一堆需要替换的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://本地主机:8091 / tabid / 1 /catid/8/page1.aspx”

通过搜索我找到了:

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

这应该可以胜任。但是,它只替换其中一个链接。任何人都可以帮我正常表达吗?我需要将tabid/**/catid中的所有数字更改为“ 1 ”。

4 个答案:

答案 0 :(得分:1)

您的问题是使用id来访问多个元素:idaccording to the specification 在文档中必须是唯一的 。使用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");
    });
});

答案 1 :(得分:1)

id属性指定HTML元素的唯一ID。在你的情况下,他们并不是唯一的。尝试使用css选择器或定位所有“a”元素。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

首先,将id更改为class。第二,做出这样的改变:

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

现在它只替换tabid之后的数字,而不是字符串中任何位置的任何数字。

相关问题