[英]Fast selection of table columns with jQuery
我们有一个大的HTML表(可能是100x100个单元格)。 选择行非常快,因为我们可以简单地选择特定TR中的所有TD。 但是在jQuery和nth-child
的帮助下选择列要慢得多。 是否有更快的色谱柱选择方案? 每列的伪类怎么样(比如class =“column-1”,等等)? 你有什么经历?
是否有更快的色谱柱选择方案?
根据原始的W3C HTML规范,我建议使用被忽略的COLGROUP / COL标签。 将此代码复制并粘贴到虚拟HTML页面中,亲身体验COLGROUP的神奇之处!
<table id="mytable">
<caption>Legend</caption>
<colgroup>
<col style="background-color: #f00;"/>
<col/>
<col/>
</colgroup>
<thead>
<tr>
<th>Column 1</th>
<th>Column 2</th>
<th>Column 3</th>
</tr>
</thead>
<tfoot>
<tr>
<td>cell 1,1</td>
<td>cell 1,2</td>
<td>cell 1,3</td>
</tr>
</tfoot>
<tbody>
<tr>
<td>footer 1,1</td>
<td>footer 1,2</td>
<td>footer 1,3</td>
</tr>
</tbody>
</table>
TFOOT标签在 TBODY标签之前 。 COLGROUP每列都有COL。
这样做的好处是,COLGROUP中COL的样式将级联到表中的所有列。 例如,背景颜色。 我永远不会惊讶于有多少人完全不知道这个技巧,即使HTML规范是为了让任何人阅读和消化。
我个人会为每一列使用一个类。 我通常的标准是这样的:
<tr class="row row-1">
<td class="col col-1"></td>
<td class="col col-2"></td>
<td class="col col-3"></td>
</tr>
您是否尝试过直接使用DOM?
var column = new Array();
var cells;
for (row = 0; row < table.rows.length; row++) {
tr = table.rows[row];
column.push(tr.cells[1]);
};
在http://www.jsfiddle.net/gaby/GWqtB/4/ ( 对于100cols x 300rows ),它的工作速度非常快
你能提供一个例子,我们可以看到你的实施速度吗?
可能是延迟是代码的其他部分吗? 喜欢选择时的造型..
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.