2010-10-19 97 views
4

我想重复jQuery内部函数的一些功能。我尝试了一个for循环,但它似乎不喜欢语法。 比如我有可变for循环里面jquery函数

var number = 2; 

现在我有

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

我想要做的是循环从0到号码(0,1,2),以便在最后,我结束了有3。 谢谢

回答

7

可能一个更好的办法,但这应该工作。

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移动的双引号,而不是之后。

+1

for循环会起作用,但您应该注意您声明'i'的位置。此外,这些ID无效。他们不能以数字开头。 – 2010-10-19 03:53:33

+0

@Peter Ajtai - 好点(答案更新)。没有注意他分配的ID,只是for循环的性质。 – RPM1984 2010-10-19 03:56:56

+0

这个解决方案的问题(我之前尝试过,但根据您的建议再次测试)是最终在内部只有一个​​。这是因为在循环内部,最后一次复飞只需要一个​​​​。 – 2010-10-19 04:39:59

2

继承人使用匿名函数的选项。

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