これは、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 のパディングは .5em です。2 番目のルールは、同じパディングをリンクに追加します。そうしないと、セルの内容がずれてしまいます。また、すべての列が同じように見えるように、a にあるいくつかの標準スタイルを修正します。これを逆に行うこともできます (リンク スタイルを td に追加します)。最後の 2 つのルールを使用して、リンクのデフォルトのホバー効果を取り除き、適切なクラスのテーブルの tr に配置します。
これは私が関心のあるブラウザで動作しますが、もちろん関心のあるブラウザでテストする必要があります:) この記事で誰かが数分節約できることを願っています!