我已经看到了一些类似的问题但没有解决这个具体问题.请考虑下表:
<table id="foo" border="1px"> <tr> <td rowspan="2">one</td> <td>two</td> <td rowspan="2">three</td> <td>four</td> <td>five</td> </tr> <tr> <td rowspan="2">two</td> <td>four</td> <td>five</td> </tr> <tr> <td rowspan="2">one</td> <td>three</td> <td>four</td> <td>five</td> </tr> <tr> <td>two</td> <td>three</td> <td>four</td> <td>five</td> </tr> </table>
使用jQuery,如何选择特定视觉列中的所有项目?例如,如果我想选择第3列,我应该将所有td与’3’作为内容.
解决方法
没有看过发布的插件,但我发现这个问题很有趣,所以我创造了一个小提琴!
如果插件工作它可能比这更好,但这是一个有趣的练习所以我也可以发布它.
将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); } } }); }); });