[英]How to highlight/hover/click a selected group of consecutive row cells in HTML table
I am trying to create an HTML table that allows highlighting/hovering/clicking on a group of consecutive row cells as one. 我正在尝试创建一个HTML表,该表允许突出显示/悬停/单击一组连续的行单元格。 Is there a way to group them with a wrapper element so that they react to a single hover/click event?
有没有一种方法可以将它们与包装元素分组,以便它们对单个悬停/单击事件做出反应?
I tried to wrap them in tbody/colgroup tags but that disturbs the layout of the table. 我试图将它们包装在tbody / colgroup标记中,但这会干扰表的布局。 Whatever wrappers I tried like div or span they disrupt the table alignment.
无论我尝试像div还是span进行包装,它们都会破坏表的对齐方式。
This is the original HTML table 这是原始的HTML表
<table class="table">
<tbody>
<tr>
<td class="td-body"><span class="td-value">41.01</span></td>
<td class="td-body"><span class="td-value">43.357</span></td>
<td class="td-body"><span class="td-value">115</span></td>
<td class="td-body td-border-right"><span class="td-value">+2.56</span>
</td>
<td class="td-body"><span class="td-value">12.10</span></td>
<td class="td-body"><span class="td-value">23.80</span></td>
<td class="td-body"><span class="td-value">3.49</span></td>
<td class="td-body td-border-right"><span class="td-value">4.05</span></td>
</tr>
<tr>
<td class="td-body"><span class="td-value">41.78</span></td>
<td class="td-body"><span class="td-value">43.15</span></td>
<td class="td-body"><span class="td-value">114</span></td>
<td class="td-body td-border-right"><span class="td-value">+1.37</span>
</td>
<td class="td-body"><span class="td-value">12.23</span></td>
<td class="td-body"><span class="td-value">23.80</span></td>
<td class="td-body"><span class="td-value">3.49</span></td>
<td class="td-body td-border-right"><span class="td-value">4.15</span></td>
</tr>
</tbody>
</table>
Output: 输出:
The table wrapped in tbody to group the consecutive cells: 包裹在表格中的表格将连续的单元格分组:
<table class="table">
<tbody>
<tr>
<tbody>
<td class="td-body"><span class="td-value">41.01</span></td>
<td class="td-body"><span class="td-value">43.357</span></td>
<td class="td-body"><span class="td-value">115</span></td>
<td class="td-body td-border-right"><span class="td-value">+2.56</span></td>
</tbody>
<tbody>
<td class="td-body"><span class="td-value">12.10</span></td>
<td class="td-body"><span class="td-value">23.80</span></td>
<td class="td-body"><span class="td-value">3.49</span></td>
<td class="td-body td-border-right"><span class="td-value">4.05</span></td>
</tbody>
</tr>
<tr>
<tbody>
<td class="td-body"><span class="td-value">41.78</span></td>
<td class="td-body"><span class="td-value">43.15</span></td>
<td class="td-body"><span class="td-value">114</span></td>
<td class="td-body td-border-right"><span class="td-value">+1.37</span></td>
</tbody>
<tbody>
<td class="td-body"><span class="td-value">12.23</span></td>
<td class="td-body"><span class="td-value">23.80</span></td>
<td class="td-body"><span class="td-value">3.49</span></td>
<td class="td-body td-border-right"><span class="td-value">4.15</span></td>
</tbody>
</tr>
</tbody>
</table>
Output: 输出:
I expect the table to highlighted as below: 我希望表格突出显示如下:
Appreciate your help! 感谢您的帮助!
You don't have to edit the sintax of a table since it should always be like (table > tbody > tr > td). 您不必编辑表的sintax,因为它应该总是像(table> tbody> tr> td)一样。 In your particular case, you may use a jQuery function that let you make that particular highlight like this:
在您的特定情况下,您可以使用jQuery函数,让您以如下方式突出显示该特定的突出显示:
$('tbody tr td').hover(function (e) { $('table tbody tr td').removeClass('highlight'); var startIndex = 4; var tr = $(this).parent('tr'); if ($(this)[0].cellIndex >= startIndex) { //color this and next row tr.children(':gt(' + (startIndex - 1) + ')').addClass('highlight'); tr.next().children(':lt(' + startIndex + ')').addClass('highlight'); } else { //Color this and previous row tr.children(':lt(' + startIndex + ')').addClass('highlight'); tr.prev().children(':gt(' + (startIndex - 1) + ')').addClass('highlight'); } });
.highlight { background-color: #F5F6CE; }
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" rel="stylesheet"/> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js"></script> <table class="table table-sm table-condensed table-bordered"> <tbody> <tr> <td class="td-body"><span class="td-value">41.01</span></td> <td class="td-body"><span class="td-value">43.357</span></td> <td class="td-body"><span class="td-value">115</span></td> <td class="td-body td-border-right"><span class="td-value">+2.56</span></td> <td class="td-body"><span class="td-value">12.10</span></td> <td class="td-body"><span class="td-value">23.80</span></td> <td class="td-body"><span class="td-value">3.49</span></td> <td class="td-body td-border-right"><span class="td-value">4.05</span></td> </tr> <tr> <td class="td-body"><span class="td-value">41.78</span></td> <td class="td-body"><span class="td-value">43.15</span></td> <td class="td-body"><span class="td-value">114</span></td> <td class="td-body td-border-right"><span class="td-value">+1.37</span></td> <td class="td-body"><span class="td-value">12.23</span></td> <td class="td-body"><span class="td-value">23.80</span></td> <td class="td-body"><span class="td-value">3.49</span></td> <td class="td-body td-border-right"><span class="td-value">4.15</span></td> </tr> <tr> <td class="td-body"><span class="td-value">41.78</span></td> <td class="td-body"><span class="td-value">43.15</span></td> <td class="td-body"><span class="td-value">114</span></td> <td class="td-body td-border-right"><span class="td-value">+1.37</span></td> <td class="td-body"><span class="td-value">12.23</span></td> <td class="td-body"><span class="td-value">23.80</span></td> <td class="td-body"><span class="td-value">3.49</span></td> <td class="td-body td-border-right"><span class="td-value">4.15</span></td> </tr> </tbody> </table>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.