Firefox不会在动态生成的JSON表中显示第一行

时间:2010-11-10 20:12:09

标签: javascript jquery json dynamic append

使用下面的jQuery代码,我正在尝试使用JSON对象来创建一个填充了所有JSON数据的新表。下面的代码在除Firefox之外的每个浏览器中都能完美运行。在Firefox中,代码确实创建了表,但它始终跳过第一行。 (所有剩余的行在FF中完美显示。)更准确地说,在“each”方法的第一次迭代期间,代码确实为第一行创建了标记以及该标记的id属性。但是,没有内部HTML(元素和文本)附加到元素。我无法理解为什么代码在每个浏览器(包括IE8)中工作,但不能在FF中工作。有人可以提供一些建议吗?

$('#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>')

1 个答案:

答案 0 :(得分: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>")
        )
});