我刚才有一个关于如何为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,但我得到完全相同的东西。
任何帮助都将不胜感激。
答案 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);
});