您实际上可以在没有 javascript 的情况下执行此操作,并且无需不必要地重复链接数十/数百或数千次。这在一定程度上取决于您支持的浏览器,特别是它们支持的 CSS,但如果像大多数现代浏览器一样,它们可以处理 position:absolute 和 td:first-child,那么这就是我为类似问题提出的建议:
将链接放在第一列:
<table class="search_results">
<tr>
<td><a href="#">Some text</a></td>
<td>more text</td>
<td>more text</td>
</tr>
</table>
这是非常好的标记,因此您唯一真正的问题是让该链接跨越表格的宽度。我使用非常标准的 CSS 做到了这一点:
table.search_results a {position:absolute;display:block;width:98%;}
将宽度更改为您想要的任何宽度,原则上您已完成并撒满灰尘。所以这一切都相对容易,但是如果你像我一样有一个流畅/响应式布局,并且你的链接上有一些标准样式以及表格上的一些填充,你将需要这些规则(从上面复制并添加额外的)。
table.search_results td:first-child {padding:0;}
table.search_results a {position:absolute;display:block;width:98%;max-width:1272px;font-weight:normal;color:#000;padding:.5em;}
table.search_results a:hover {background:none;}
table.search_results tr:hover {border-color:#25505b;background:#b5d6dd;}
解释一下:第一条规则仅删除我的第一个 td 上的所有填充。默认情况下,我的 td 上的填充是 0.5em。第二条规则在链接上添加相同的填充,否则最终会出现未对齐的单元格内容。它还纠正了我在 a 上的一些标准样式,以确保所有列看起来都一样。你也可以反过来做(将链接样式添加到你的 td)。通过最后两条规则,我摆脱了链接上的默认悬停效果,然后将其放在任何具有正确类的表的 tr 上。
这适用于我关心的浏览器,但您当然应该在您关心的浏览器中进行测试:) 希望我能帮助某人节省几分钟的这篇文章!