【发布时间】:2014-12-05 14:46:47
【问题描述】:
我有一张包含多个td rowspan 的表格。在鼠标悬停时,整个字母行应变为红色。例如,如果我们将鼠标放在任何字母值上,整个字母部分应该显示为红色。数字也一样。
我尝试了一些 jQuery 来实现这一点,但无法获得相同颜色的整行字母或数字。
$("td").hover(function() {
$el = $(this);
$el.parent().addClass("hover");
if ($el.parent().has('td[rowspan]').length == 0) {
$el
.parent()
.prevAll('tr:has(td[rowspan]):first')
.find('td[rowspan]')
.addClass("hover");
}
}, function() {
$el
.parent()
.removeClass("hover")
.prevAll('tr:has(td[rowspan]):first')
.find('td[rowspan]')
.removeClass("hover");
});
body {
padding: 50px;
}
table {
width: 100%;
border-collapse: collapse;
}
td,
th {
padding: 20px;
border: 1px solid black;
}
.hover {
background: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tbody>
<tr>
<td rowspan="3">Alphabet</td>
<td rowspan="2">a</td>
<td>b</td>
<td>c</td>
</tr>
<tr>
<td>d</td>
<td>e</td>
</tr>
<tr>
<td>f</td>
<td>g</td>
<td>h</td>
</tr>
<tr>
<td rowspan="3">Number</td>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
</tr>
<tr>
<td>7</td>
<td>8</td>
<td>9</td>
</tr>
</tbody>
</table>
我们如何解决这个问题?
【问题讨论】:
-
您的 JSFiddle 似乎工作正常 - 鼠标悬停时,数字/字母行变为红色。
-
最简单的方法是使用嵌套表,可以改html代码吗?
-
@SamyS.Rathore 鼠标悬停整个字母行应该变成红色 - 猜测这意味着,“如果我将鼠标悬停在字母上,我希望突出显示三行。如果我将鼠标悬停在 A 上,我希望突出显示两行“
-
@RajasekharBammidi,如果我将鼠标悬停在“A”上,您是否也希望突出显示“字母”?是吗?
-
@MrCoder 如果我将鼠标悬停在 A 上,除了它之后的两行(bc 和 de)之外,第一列(带有“字母”文本)也会被选中,这意味着所有其他字母也应该是红色的。总而言之,他希望网格表现为两行,字母和数字,是这样吗??