jquery在循环中动态生成元素id

时间:2010-06-06 11:56:01

标签: jquery

这是一个函数中的循环,旨在创建元素<li>并为每个<li>提供唯一的ID。但它不起作用。我怀疑在.attr()中使用引用是一个简单的语法错误。但我无法从谷歌那里得到直接答案。

for (i=0;i<array.length;i++)
{
//create HTML element of tag li
$('#suggest').append("<li></li>");
$("li").attr("id",'li'+i);
$('#li'+i).html(array[i]);
}

4 个答案:

答案 0 :(得分:5)

像这样使用

$suggest = $('#suggest');
for (i=0;i<array.length;i++) { 
  $suggest.append($('<li/>', {
     id:    'li'+i,
     html:  array[i]
  })); 
} 

为获得最佳性能,请执行以下操作:

var str = '';
for (i=0;i<array.length; i++) {
   str += '<li id=\'li' + i + '\'>' + array[i] + '</li>';
}
$('#suggest').append(str);

答案 1 :(得分:3)

通过撰写$('li'),您需要在文档中设置每个<li>的ID。

您根本不需要添加ID 相反,您应该在附加每个<li>元素之前组合它们,如下所示:

var newLi = $('<li></li>').html(array[i]);
//Do things to newLi
$('#suggest').append(newLi);

请注意,如果在循环中添加事件处理程序,它将共享i变量,从而导致意外结果。
相反,如果在事件处理程序中需要i,则应将循环体移动到以i作为参数的单独函数。

答案 2 :(得分:1)

    <script type="text/javascript">
        $(function () {

            function createListItems(howmany, container) {
                for (i = 0; i < howmany; i++) {
                    container.append('<li id="listItem' + i + '">');
                }
            }

            createListItems(3, $('#unorderedList1'));

        });

    </script>
</head>
<body>
    <ul id="unorderedList1">

    </ul>
    </body>

答案 3 :(得分:0)

您可以这样做:

for (i=0;i<array.length;i++)
{
  //create HTML element of tag li
  $('#suggest').append("<li id='li" + i + "'></li>");
  $('#li'+i).html(array[i]);
}