2012-07-10 113 views
0

我有这个问题使用jQuery的.each()函数。 我想排序我有一个表的行和列,我试图通过向我的'td'标记添加名为'row'和'col'的属性来完成。jQuery .each()函数问题

基本上是我的代码如下所示:

$('tr').each(function(tr_index) { 
    $('td').each(function(td_index) { 
     $(this).attr({ 
      'row' : tr_index, 
      'col' : td_index, 
     }); 
    }); 
}); 

,但是这给了我下面的输出:

<td row="6" col="0"></td> 
<td row="6" col="1"></td> 
<td row="6" col="2"></td> 
<td row="6" col="3"></td> 
<td row="6" col="4"></td> 
<td row="6" col="5"></td> 
<td row="6" col="6"></td> 

行对每一个 'TD' 标签属性的输出6。这是否意味着第一个.each()循环在任何第二个.each()循环被触发之前执行?

任何想法如何我可以改变这一点,使我有这样的事情:

<td row="0" col="0"></td> 
<td row="0" col="1"></td> 
<td row="0" col="2"></td> 
<td row="1" col="0"></td> 
<td row="1" col="1"></td> 
<td row="1" col="2"></td> 
<td row="2" col="0"></td> 

等等

我将不胜感激,如果任何人有一个解决这个问题对我来说,因为我似乎无法绕过它。

+0

看起来你有你的解决方案,但它会更好地使用[HTML5数据属性(http://html5doctor.com/html5-custom-data-attributes/),而比伪造属性。 – steveax 2012-07-10 01:03:18

回答

5

试试这个

 $('tr').each(function(idx_row){ 
      $(this).children().each(function(idx_col){ 
       $(this).attr({'row':idx_row, 'col':idx_col}); 
      }) 
     }); 
+0

谢谢!那完美的工作。我以为我已经尝试过了,但我一定犯了错误。 – 2012-07-10 00:43:12