While it does depend on the browser, that doesn't mean that you need to fight with browser inconsistencies and try to second-guess whatever strings every browser will return (both now and in the future). Right now, it's 'transparent' in IE and Firefox, and rgba(0, 0, 0, 0) in Webkit browsers, but this may change.
Instead of hard-coding strings and trusting browsers to give you what you expect, you can look up and test against the exact actual name this visitor's browser actually uses for the background-color
of a dummy element with background:none;
.
// Get this browser's take on no fill. Append, else Chrome returns 'initial'
var $temp = $('<div style="background:none;display:none;"/>').appendTo('body');
var transparent = $temp.css('backgroundColor');
$temp.remove();
// Use it
if ( $elem.css('backgroundColor') != transparent ) {
// It's set
} else {
// It's blank
}
Even if some crazy future browser chooses to use the name "Clive" for the background-color
of elements where none has been set (or, more realistically, maybe something based on a schema that better works with the whole sRGB gamut or screen color profiles) this will still work.
Here's an example JSBIN in the context of answering the question How do I detect the inherited background-color of an element using jQuery/JS?
Be aware though that some browsers are inconsistent with themselves depending on whether the element is part of the document body or not. So, make sure you compare like with like.
For example, in Chrome:
$('<div/>').css('backgroundColor');
// returns '' empty string
$('<div style="background:none;"/>').css('backgroundColor');
// returns 'initial'
$('<div style="background:none;"/>').appendTo('body').css('backgroundColor');
// returns 'rgba(0, 0, 0, 0)'