【发布时间】:2012-11-09 21:34:19
【问题描述】:
我正在探索如何设置表格样式,以便在鼠标悬停在列上时可以更改边框。
当鼠标悬停在一列上时,我想通过更改边框颜色来突出显示该列:
为了突出显示,我在 jQuery 库中使用了以下 JavaScript 代码:
$('td').hover(function() {
var t = parseInt($(this).index()) + 1;
$('td:nth-child(' + t + ')').addClass('highlighted');
},
function() {
var t = parseInt($(this).index()) + 1;
$('td:nth-child(' + t + ')').removeClass('highlighted');
});
使用以下 CSS:
.highlighted {
border-top: 2px solid black;
border-right: 2px solid black;
border-left: 2px solid black;
}
您可以在此 JSFiddle 中查看其工作原理:http://jsfiddle.net/sCFjj/1/ 这仅在我将鼠标悬停在最左侧的列上时才有效。否则,它会突出显示右列(和顶部),但不会突出显示左垂直列。有没有办法让左竖列出现?
理想情况下,我希望效果忽略最低行,但我不确定如何从 jQuery 选择中排除一行。
我的尝试基于之前的question。
【问题讨论】:
-
左边框消失是因为border-collapse 属性。它默认设置为折叠。
-
在添加 .highlighted 类后添加
$('tr:last-child td').removeClass('highlighted');将“忽略最低行” -
@Andy 出于某种原因,这只删除了左侧的样式。
$('tr:last-child td')是否引用所选列中的最低单元格?我正在尝试将其设置为不同的颜色,但它的行为并不像我想象的那样。 -
它引用最后一行 (tr) 中的所有单元格 (td),然后删除该类。如果您更改了颜色,它将影响该行中的所有单元格,但是因为只有您悬停的列应该具有类(.highlighted),所以您只会看到该单元格上的差异
-
我现在明白
$('tr:last-child td')是如何引用该行的,但我不明白如何使用highlighted。$('tr:last-child td highlighted')(或各种排列)似乎没有什么不同。
标签: javascript html css html-table hover