【问题标题】:for loop inside jquery functionjQuery函数内的for循环
【发布时间】:2010-10-19 03:44:07
【问题描述】:

我正在尝试在 jquery 函数中重复某些内容。我尝试了一个 for 循环,但它似乎不喜欢它的语法。 例如我有变量

var number = 2;

现在我有

$('tr').html('<td id="'+number+'"></td>');

我想要做的是从 0 循环到数字 (0,1,2) 以便最终我得到 3 。 谢谢

【问题讨论】:

    标签: javascript jquery loops


    【解决方案1】:

    可能有更好的方法,但这应该可行。

    var loops = [1,2,3];
    
    $.each(loops, function(index, val) {
      $('tr').html('<td id="myCell' + index + '"></td>');
    });
    

    这也应该有效(常规 JS):

    var i;
    for(i=0; i<3; i++) {
      $('tr').html('<td id="myCell' + i + '"></td>');
    }
    

    请注意我如何在 id 前面加上“myCell”这个词,以确保符合 XHTML。 (感谢@Peter Ajtai 指出这一点)。

    编辑

    我刚刚注意到另一个问题 - 您正在使用 .html 函数来添加单元格。但是 .html 替换了匹配元素的整个 html。所以你只会得到最后一个单元格。 :)

    您可能正在寻找 .append 函数:

    $('tr').append('<td id="myCell' + i + '"></td>');
    

    EDIT 2 -- 将双引号移到 myCell 之前而不是之后。

    【讨论】:

    • for 循环会起作用,但你应该注意你声明i 的位置。此外,这些 ID 无效。它们不能以数字开头。
    • @Peter Ajtai - 好点(答案已更新)。没有注意他分配的 ID,只注意 for 循环的性质。
    • 这个解决方案的问题(我之前尝试过,但根据您的建议再次测试)是最终在 内部只有一个 。这是因为在循环内部,最后一次复飞只需要一个 .
    • $.each([1,2,3],...) 是我需要的!即使您在循环中创建子函数,它也会按预期工作。使用 for() 创建子函数,但索引是调用函数时的当前值,而不是创建函数时的值。
    【解决方案2】:

    这是一个使用匿名函数的选项。

    $('TR').html(
        function(){
            var content=''; 
            for (var i=0; i<=2; i++  ){
                content=content+'<td id="id_'+i+'"></td>';
            }
            return content;
        }
    )
    

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签