2010-11-10 142 views
0

使用下面的jQuery代碼,我試圖讓JSON對象創建一個填充了所有JSON數據的新表。下面的代碼在除Firefox以外的每個瀏覽器中都能很好地工作在Firefox中,代碼確實創建了表格,但它始終跳過第一行。 (所有其餘行在FF中完美顯示。)更準確地說,在「each」方法的第一次迭代期間,代碼確實爲第一行創建了標記,併爲該標記創建了id屬性。但是,內部HTML(元素和文本)沒有附加到元素。我不明白爲什麼代碼在每個瀏覽器(包括IE8)中都能正常工作,但不是FF。誰能提供一些建議?Firefox不會在動態生成的JSON表中顯示第一行

$('#mydiv').append('<table><thead><th>Activity</th><th>Category</th><th>Deadline</th><th>Status</th></thead><tbody>') 

$(json).each(function(i) { 
    $('#mydiv tbody') 
     .append("<tr id='" + json[i].id + "'></tr>") 
     .children("'#" + json[i].id + "'") 
      .append("<td class='activity'>" + json[i].activity + "</td>") 
      .append("<td class='category'>" + json[i].category + "</td>") 
      .append("<td class='deadline'>" + json[i].deadline + "</td>") 
      .append("<td class='status'>" + json[i].status + "</td>") 
}) 
$('#mydiv').append('</tbody></table>') 

回答

3

試試這個(不知道它會工作..)

$('#mydiv').append('<table><thead><th>Activity</th><th>Category</th><th>Deadline</th><th>Status</th></thead><tbody></tbody></table>') 

$(json).each(function(i) { 
    $('#mydiv tbody') 
     .append(
      $("<tr />").attr("id", json[i].id) 
      .append("<td class='activity'>" + json[i].activity + "</td>") 
      .append("<td class='category'>" + json[i].category + "</td>") 
      .append("<td class='deadline'>" + json[i].deadline + "</td>") 
      .append("<td class='status'>" + json[i].status + "</td>") 
     ) 
}); 
+0

它的工作!你可以解釋爲什麼我的代碼在FF(並且只有FF)中不起作用,而你的建議呢?如果可以的話,我會投你的答案,但我還沒有名聲。謝謝。 – jake 2010-11-10 20:27:24

+0

我只是在這裏猜測,但當你追加第一行時,HTML變得不完整,所以我認爲不同的瀏覽器試圖以不同的方式「完成」它。 (我認爲你仍然可以將其標記爲「正確答案」,即使你不能贊成) – cambraca 2010-11-10 20:30:34

+0

謝謝,Cambraca。這就說得通了。 – jake 2010-11-10 20:36:43