在表格中悬停单元格时突出显示特定单元格

Posted

技术标签:

【中文标题】在表格中悬停单元格时突出显示特定单元格【英文标题】:Highlighting specific cells on hover of a cell in a table 【发布时间】:2015-11-03 23:31:51 【问题描述】:

我有下表(实际表更大,在 WordPress 中实现):

<table id="tablepress-71" class="tablepress tablepress-id-71">
       <tr class="row-1">
         <td class="column-1"><span><a href="#">Item 1</a></span></td>
         <td class="column-2"><span><a href="#">Item 2</a></span></td>
      </tr>
      <tr class="row-2">
         <td class="column-1"><span><a href="#">Item 3</a></span></td>
         <td class="column-2"><span><a href="#">Item 4</a></span></td>
      </tr>
  </table>

我需要在将鼠标悬停在特定单元格上时突出显示(背景色)一组单元格。 例如,将鼠标悬停在单元格 .row-1 .column-2 上时,我希望突出显示以下单元格: .row-1 .column-2.row-2 .column-2

有 8 个单元格接受悬停,每个单元格在悬停时突出显示表格上的一组特定单元格(没有规则,只是一个指定的列表)。

可以使用 CSS 和/或 JS。

【问题讨论】:

你在no rules, just a specified list 失去了我。那么您有想要突出显示的列表吗?或者您想突出显示同一列上的所有单元格? Bogdan,没有规则 = 指定的单元格列表,而不是像“行中的所有单元格”/“列中的所有单元格”/“所有白色单元格”之类的东西......我必须列出单元格为每个悬停的单元格突出显示 【参考方案1】:

你在找这个吗?如果不是,你能澄清一下。

给所有column2单元格添加一个active类:

$('td.row-1 .column-2').hover(function()
    $('.column-2').toggleClass('active');
);

或:

给特定的column2单元格添加一个active类:

$('.column-2').hover(function()
    $('this').toggleClass('active');
);

【讨论】:

谢谢,bklynM!这对我有用: $('.row-1 .column-2').hover(function() $('.row-2 .column-2').addClass('active'); $('. row-2 .column-1').addClass('active'); );但是,如何在悬停完成后删除红色背景?需要恢复到原来的背景颜色... 我在上面的答案中将 addClass 更改为 toggleClass。如果有效,请接受答案。 不再工作 - addClass 或 toggleClass。 $('.row-1 .column-2').hover(function() $('.row-2 .column-2').toggleClass('active'); );也用“td”。在元素类名称中 - 不起作用。我错过了什么?见这里:jsfiddle.net/morsagmon/g4w2ttpy/3 我整理了它,它现在在我的小提琴中工作。我还去掉了悬停样式的边框和粗体,因为它使单元格跳跃,你可能不需要 css 名称的权重,可以使用 .active 和 .active span a:jsfiddle.net/g4w2ttpy/28 是的,谢谢!还有一个问题:如何将这个 JS 限制为特定的 tablepress-71 表?【参考方案2】:

我假设“没有规则,只是一个指定的列表”,您的意思是每个单元格都有一个其他特定单元格的列表,当第一个单元格悬停时,您希望突出显示该单元格。但是从代码的角度来看,这些单元格会有些随意。 (即不受任何规则或逻辑的约束)。

如果这个假设是正确的,并且如果您愿意使用 jquery,您可以对 javascript 执行以下操作(假设您的 CSS 中有一个名为“highlight”的类):

$('.row-1 .column-2').mouseenter(function()
  $('.row-1 .column-2').addClass('highlight');
  $('.row-2 .column-2').addClass('highlight');
).mouseleave(function() 
  $('.row-1 .column-2').removeClass('highlight');
  $('.row-2 .column-2').removeClass('highlight');
);

这会有点冗长,因为您必须准确地写出要为悬停的每个单元格突出显示哪些单元格。但如果没有规范行为的规则,那是我想到的最佳方法。

祝你好运!

这是一个工作示例:code pen

【讨论】:

谢谢!你完全理解我需要什么:) 代码对我不起作用(并且代码笔已关闭)。完全没有悬停效果。使用 jQuery。 嗯不知道为什么代码笔不起作用(这是我第一次在这里发帖,所以也许我做错了什么,但链接对我有用),但看起来 bklynM 的答案有效对你来说,那太好了!

以上是关于在表格中悬停单元格时突出显示特定单元格的主要内容,如果未能解决你的问题,请参考以下文章

如何避免在表格视图中突出显示两个单元格?

单击时突出显示表格视图单元格

从引用的单元格更改单元格时,如何突出显示该单元格?

触摸时我的表格单元格不会立即突出显示

如何禁用 UITableViewCell 突出显示?

当您长按(突出显示)它所在的单元格时会触发哪个按钮状态?