使用jQuery添加表行 - IE7具体问题

时间:2011-09-06 18:12:36

标签: jquery

仍然掌握jQuery,我在向表中添加行时遇到问题。我从this link on stackoverflow获得了代码,但它没有在IE7上工作,遗憾的是,有一个浏览器无法工作。

我认为问题是桌面的jQuery选择器,但我尝试的其他任何东西都没有用。有什么想法吗?

一些代码:

<table id="payments" class="resultsGrid">
    <thead>
        <tr class="header">
            <th style="width: 45px;">Type</th>
            <th style="width: 50px;">Check #</th>
            <th style="width: 50px;">Amount</th>
            <th style="width: 50px;">Date</th>
            <th>Notes</th>
            <th style="width: 48px;"></th>
        </tr>
    </thead>
    <tbody>
    </tbody>
</table>

和JS:

var table = $("#payments > tbody:last");
    table.empty();

    if (demolition.Payments != null) {
        $("#payments").show();

        for (i = 0; i < demolition.Payments.length; i++) {
            table.append("<tr>");
            // blah blah trimmed
            table.append("</tr>");
        }
    }
    else {
        table.append("<tr>");
        table.append("<td colspan=\"6\" style=\"padding: 4px;\">No payments recorded.</td>");
        table.append("</tr>");
    }

1 个答案:

答案 0 :(得分:2)

将它们合并为一个电话。你的jQuery正在关闭标签并添加一行,然后在行外添加单元格。甚至Chrome也会在jsfiddle

中显示此行为
table.append("<tr><td colspan=\"6\" style=\"padding: 4px;\">No payments recorded.</td></tr>"); //This adds a row with its contents contained.

更好的是,将它们连接到一个字符串并一次添加所有行以减少DOM操作开销。 stringbuffer技术在现代浏览器中不太有用,但由于你使用的是IE7,它可能比+运算符更快。

var buffer = [];
for (...){
    buffer.push("<tr>");
    buffer.push(cellOne);
    buffer.push(cellTwo);
    buffer.push(cellThree);
    buffer.push("</tr>");
}

table.append(buffer.join('')); //This speeds up string concatenation.