将索引附加到href

时间:2011-03-13 13:22:14

标签: jquery each

我有一个无序的链接列表,我需要将索引作为数字附加到。

因此href="#"会读取href="#1"href="#2"等。

据我所知,我可能需要使用.each(),但我的语法功能还不够好。

我的一部分知道这很荒谬,但我有一个星期一的atm。

3 个答案:

答案 0 :(得分:5)

您是指所选元素集中元素的索引吗?如果是这样,您可以使用.attr()并将函数传递给它:

$('a').attr('href', function(i, value) {
    return value + (i+1);
});

当然,您只需选择所需的链接,例如给你的清单一个ID:

$('#theList a')

<强>更新

jQuery 1.3.2(以及之前)似乎存在一个错误。 It seems the old value is not passed to the callback。所以你必须明确地阅读这个值:

return this.href + (i+1);

当然,如果旧值始终为#,那么您可以将其与索引连接:

return '#' + (i+1); 

但在这种情况下,您可以使用each()作为@Shadow Wizard shows in his answer。将函数传递给attr的好处只在于您避免了对属性的两次访问(一次读取,一次读取),这似乎无法在jQuery 1.3.2中起作用。

答案 1 :(得分:2)

嗯,这是周日但是......

$("#myList li").each(function(index) {
    $(this).find("a").attr("href", "#" + (index + 1));
});

Live test case

答案 2 :(得分:0)

更容易使用.attr()功能。

$('ul a').attr("href", function(index, cHRef) {
    return cHRef + index;
});

如果您受限于早于v1.1的旧jQuery实现,那么您将需要使用.each()

$('ul a').each(function(index, cAnchor) {
    cAnchor.attr('href', cAnchor.attr('href') + index);
});