获取当前正在悬停的元素的非悬停css backgroundColor prop

时间:2011-12-15 19:01:45

标签: jquery css hover

我有一个行表,在点击时“展开”(通过在点击的行之后插入一个新行),我使用css对行中的单元格进行斑马式设置以及“突出显示”当一行悬停在上面时,单元格的样式。

我希望插入的行具有与所单击行相同的背景颜色。

我正在尝试使用jQuery中插入行的单元格的backgroundColor,使用单击行中第一个单元格的backgroundColor属性。

然而,当我这样做时,我得到了'突出显示'颜色,因为我徘徊在点击的行上 - 我想要非悬停值。

的CSS:

.zebra-striped tbody tr:nth-child(odd) td {
    background-color: #f9f9f9;
}
.zebra-striped tbody tr:hover td {
    background-color: #f5f5f5;
}

jQuery的:

table.find('tbody').find('tr').on('click',function() {
    var colourOfRow = $(this).find("td").filter(":first").css('backgroundColor');
    var newRows = $('<tr><td style="background-color:'+colourOfRow+';" colspan="'+numCols+'" rowspan="2">Fetching comment...</td></tr><tr></tr>');
    newRows.insertAfter($(this));
});

我确信我可以通过在需要使用之前存储颜色来解决这个问题,但我的问题是:

是否有我错过的jQuery选择器或其他一些众所周知的技巧?

3 个答案:

答案 0 :(得分:0)

不,你不能这样做。不。

更新颜色/样式的更好方法是添加/删除类。在CSS中定义样式,然后添加/删除类以使显示确认。

尝试通过比较jQuery中的信息来切换状态是很古怪的!

答案 1 :(得分:0)

为什么不采用+2或-2行相同单元格的背景颜色?如果只有一行,您可以添加更多行获取颜色并快速删除它们。 我认为最好的方法是为奇数和偶数元素保存颜色,并在以后需要时使用它们。 但是又一次(我不确定是这种情况)如果你在点击已经添加的行后添加一行会给你带来另一个问题:)

答案 2 :(得分:0)

以下是我现在解决的问题(感谢@Mathletics和@szym的答案):

tableRows.each(function(index){
    $(this).data('oc', $(this).find("td").filter(":first").css('backgroundColor'));
});

然后当我在行上下文中需要那种颜色时:

var colourOfRow = $(this).data('oc');

可能不是最高性能的解决方案,但我认为已经足够好了。

如果有人有个好主意,我会暂时搁置这个问题。