使用javascript将Id动态分配给DOM元素

时间:2010-05-26 20:48:15

标签: javascript

我刚才有一个关于如何为HTML元素即时生成id的快速问题。 到目前为止,我已经尝试了一些东西,我开始使用“for”循环,我已经知道有多少元素我必须生成Id,在这种情况下,我有一个“ul”与6“li”。 我的“for”循环如下:

var items = $("ul li").length;
for(var i = 0; i <= items; i++){
    $("ul li").attr("id", "number" + i);
}

“number”将是与“i”连接的新id,因此我为每个“li”获得不同的Id。 正如你可能知道的那样,这不起作用,因为我最终为每个“li”使用相同的Id:

在这种情况下,对于“ul”中的所有“li”元素,我得到<li id="number6">... </li>。 我尝试了一个“while”循环和“.each()”与jQuery,但我得到完全相同的东西。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:7)

使用.each()(内部使用this,而不是选择器再次使用!),您可以更轻松地完成此操作!,如下所示:

$("ul li").each(function(i) {
  $(this).attr("id", "number" + i);
});

.each()中的函数将索引和元素作为参数,因此您可以使用i来指定从当前开始的0开始的ID。

或者,您可以将类似的功能传递给.attr(),如下所示:

$("ul li").attr('id', function(i) {
  return "number" + i;
});

答案 1 :(得分:1)

你的代码很不错,我只是想记下这个,以防有人来这个帖子寻找类似的答案。

var items = $("ul li").length;
for(var i = 0; i <= items; i++){
    $("ul li").attr("id", "number" + i);
}

在你的for循环中,你在每次迭代上再次抓取每个“ul li”,并将所有这些的ID设置为特定的ID。你真正想要的是.each()方法,迭代所有这些:

$("ul li").each(function(i) {
    $(this).attr("id", "number" + i);
});