在悬停时更改表格行颜色(jQuery或CSS)

时间:2014-10-28 11:03:15

标签: javascript jquery html css

我的问题是我已经有一些'突出显示'(意味着他们有自己的背景颜色来突出显示它们)我的表格中的单元格,当我使用代码改变整个颜色时,它们不会改变它们的背景颜色当鼠标在它们上面移动时排。

覆盖一行只会改变未突出显示的单元格的背景颜色。

如何解决此问题,以便整行改变背景颜色?

我有这个HTML表格:

$(window).load(function() {
  $('#infotable tr').hover(function() {
    $(this).addClass('hover');
  }, function() {
    $(this).removeClass('hover');
  });
});
#infotable td { 
  padding:0.7em;
  border:#969696 1px solid;
}
.highlight {
  background:#DAFFD6;
}
.hover {
  background:yellow;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<table>
  <thead>
    <tr>
      <th></th>
      <th>Column 1</th>
      <th>Column 2</th>
      <th>Column 3</th>
    </tr>
  </thead>
  <tbody id="infotable">
    <tr>
      <td>Row #1</td>
      <td>889 kg</td>
      <td class="highlight">151 kg</td>
      <td>192 kg</td>
    </tr>
    <tr>
      <td>Row #2</td>
      <td>784 kg</td>
      <td>15 kg</td>
      <td class="highlight">64 kg</td>
    </tr>
  </tbody>
</table>

4 个答案:

答案 0 :(得分:6)

您可以单独使用CSS实现此目的。您只需要使:hover规则比td.highlight更具体。试试这个:

#infotable tr:hover td,
#infotable tr:hover td.highlight
{
    background:yellow;
}

Example fiddle

答案 1 :(得分:1)

通过仅更改javascript,Addclass将鼠标悬停在所有td上,而不是tr

  $('#infotable tr').hover(function()
  {
    $(this).find('td').addClass('hover');
  }, function()
  {
    $(this).find('td').removeClass('hover');
  });

FIDDLE

答案 2 :(得分:1)

只需从悬停中继承该样式,请检查此Fiddle

.hover, .hover .highlight
{
    background:yellow;
}

答案 3 :(得分:0)

在css中尝试这个

#infotable tr td:hover
{
    background:yellow;
}