jQuery选择带有rowspan的表中的可视列

我已经看到了一些类似的问题但没有解决这个具体问题。 请考虑下表:

one two three four five
two four five
one three four five
two three four five

使用jQuery,如何选择特定视觉列中的所有项目? 例如,如果我想选择第3列,我应该将所有td与’3’作为内容。

没有看过发布的插件,但我发现这个问题很有趣,所以我创造了一个小提琴!

http://jsfiddle.net/PBPSp/

如果插件工作它可能比这更好,但这是一个有趣的练习所以我也可以发布它。

colToGet更改为要突出显示的列。

 $(function() { var colToGet = 2; var offsets = []; var skips = []; function incrementOffset(index) { if (offsets[index]) { offsets[index]++; } else { offsets[index] = 1; } } function getOffset(index) { return offsets[index] || 0; } $("#foo > tbody > tr").each(function(rowIndex) { var thisOffset = getOffset(rowIndex); $(this).children().each(function(tdIndex) { var rowspan = $(this).attr("rowspan"); if (tdIndex + thisOffset >= colToGet) { if(skips[rowIndex]) return false; $(this).css("background-color", "red"); if (rowspan > 1) { for (var i = 1; i < rowspan; i++) { skips[rowIndex + i] = true; } } return false; } if (rowspan > 1) { for (var i = 1; i < rowspan; i++) { incrementOffset(rowIndex + i); } } }); }); });​ 

这个插件处理复杂的colspan和rowspan选择:

 $('#foo th:nth-col(3), #foo td:nth-col(3)').css("color","red"); 

我不确定你想如何选择它们,但这样的事情呢?

 $(function() { $("#foo").find("td:contains('three')").css("background-color","#eee"); }); 

选择后,您想对TD做什么?

给每个行/列类。 因此,第1行第1列将具有class='Row1 Column1'然后根据需要在类上选择。 (如果您不想选择行,则不需要行规范只是想要推断如何进行网格。

如果你想支持colspan和rowspan,那么首先需要构建表索引,即。 矩阵,用于标识每行中的单元格位置,而不管标记。 然后,您需要跟踪所有表格单元格的事件,并计算它们在矩阵中的偏移量以及共享水平和垂直索引的列。

这是https://github.com/gajus/wholly的描述,这是我为此目的开发的一个插件。 使用这些事件,您可以找到行或列中的所有值,包括使用rowspan或solspan属性附加的值。

我做了一个可视化,说明了一个表和导航时触发的事件。

全

橙色是活跃的细胞,红色是由垂直事件触发的细胞,蓝色是由水平事件触发的细胞。