仍然掌握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>");
}
答案 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.