我想根据<tr>
中<td>
的背景颜色隐藏<tr>
,我的当前代码会根据文本隐藏<tr>
在<td>
,但这不是一个很好的解决方案。该表是一个日历,所以如果JQuery可以隐藏基于背景颜色的表行会很好。
我目前的代码:
function ShowAbsence()
{
if(!presenceActive) clearPresence();
$('table#newspaper-a tr:not(#header, #trWeekNummer)').each(function() {
var toggle1 = true;
$('td:not(#firstlastname)',this).each(function() {
if($(this).text() == "f" || $(this).text() == "M" || $(this).text() == "A") {
toggle1 = false;
}
});
if(toggle1) {
$(this).toggle();
}
});
if(absenceActive) {
absenceActive = false;
} else {
absenceActive = true;
}
}
这样可以正常工作,但正如您所看到的,它会根据单元格中的文本隐藏。我希望你可以帮我隐藏它背景颜色!
答案 0 :(得分:1)
您必须使用jQuery的$.css()
功能,以便获得与选择器关联的颜色样式。
这将返回一个RGB值(如rgb(255,0.221)),因此为了将其转换为十六进制(#ff00dd类型),您需要使用此函数(提取from this other question ):
function hexc(colorval) {
var parts = colorval.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
delete(parts[0]);
for (var i = 1; i <= 3; ++i) {
parts[i] = parseInt(parts[i]).toString(16);
if (parts[i].length == 1) parts[i] = '0' + parts[i];
}
color = '#' + parts.join('');
return color;
}
因此,你可以这样:
if (hexc($('#demo').css('background-color')) == '#ff00dd') {
alert("Works!!");
}
活生生的例子:http://jsfiddle.net/vyQKV/1/
我强烈建议你使用课程而不是处理颜色。应使用不同的类定义背景颜色,为了检查背景颜色,您应该使用$.hasClass()
检查课程
例如:
if($(this).hasClass('redBackground')){
//whatever
}