2011-07-09 49 views
0

JSON结构:表格单元的表格行

{ “行”:[

{"row":[ 
     {"cells": [ 
    {"data": "Edit"}, 
    {"data": "030194"}, 

     ]} 
]}, 
{"row":[ 
     {"cells": [ 
    {"data": "Add"}, 
    {"data": "030194"}, 
     ]} 
]}, 
{"row":[ 
     {"cells": [ 
    {"data": "Delete"}, 
    {"data": "030194"}, 
     ]} 
]}   

]}

JQuery的代码:

$。每个(response.rows,函数(指数,行){

$.each(rows.row, function(index,row){ 
     var element=$("tbody").append("<tr id='" + index + "'>"); 
     var element1=element.append("<td><input type='checkbox'></input></td>"); 
     $.each(this.cells, function(index){ 
      element1.append("<td>" + this.data + "</td>"); 
     }); 
     $("tbody").append("</tr>"); 
}); 

});

问题:

  1. 产生的每个行具有与索引的值的ID = 0。ROW1的ID应该是0,用于行2应该是1和用于ROW3 ID应等于2

  2. td元素被抽出为tbody的子元素。他们应该是TR

  3. 关闭TR的孩子每行的最后一个单元格,目前TR会自行关闭后,应得出的任何单元格绘制

回答

1

试试这个。这让我苦恼了一会儿,因为我习惯了在通过DOM元素循环的上下文中.each()的语法。由于它是$ .each(),所以第一个循环的索引指向你想要为每一行获取的数字。

我把TR追加移到了你所在的循环之外。

(最后,孩子是不是加入TD的最快的方法,你可以使用的createElement像Endophage贴,然后指的是)

http://jsfiddle.net/EY4an/

$.each(response.rows, function(index, rows) { 

    $("tbody").append('<tr id="index' + index + '"></tr>'); 

    $.each(this.row, function(index) { 
     var element1 = $("tbody tr:last-child").append("<td><input type='checkbox'></input></td>"); 
     $.each(this.cells, function(index) { 
      element1.append("<td>" + this.data + "</td>"); 
     }); 
    }); 
}); 

我还添加了字'index'指向表行的ID属性,因为ID应该以字母开头。

+0

它的工作原理!!!!!好极了!!谢谢 :) – techlead

0

不是100%肯定有关的指标问题之前,但在渲染方面,这里有一个向下突破:

var element=$("tbody").append("<tr id='" + index + "'>"); 

我觉得这是你的错误开始,在上述行,元素将等于tbody,而不是tr

var element1=element.append("<td><input type='checkbox'></input></td>"); 

在这里,我们现在追加TD到tbody然后部件1也将等于tbody。 ,因此为什么每个内部的下一个附加内容不能正常工作。最后,你应该只追加整个元素,所以追加<tr></tr>作为两个单独的操作永远不应该预计工作。

尝试以下:

var row = document.createElement('tr'); 
row.setAttribute('id', index); 
$("tbody").append(row); 
$(row).append("<td><input type='checkbox'></input></td>"); 
$.each(this.cells, function(index){ 
    $(row).append("<td>" + this.data + "</td>"); 
}); 
$("tbody").append(row); 

刚上索引问题的思考。您使用的名称是index两次。尝试为其中一个使用不同的变量名称。

+0

#2和#3工作!谢谢。 #1仍然是一个问题。我改变了变量名称,但每行仍然获得值为0的id属性 – techlead