tags:

views:

85

answers:

4

I have set the background color of a class using css, now I want to put it in a variable using jquery. Thanks

+1  A: 

You may have to apply that class to a temporary element, and then extract the bgcolor of that element.

.cm { background-color:#990000 }

--

// creating an empty element and applying our class to it
var bgcolor = $("<div>").appendTo("body").addClass("cm").css("background-color");
alert(bgcolor); // rgb(153, 0, 0)
Jonathan Sampson
Can you show me how it's suppose to be done
halocursed
A: 
var $tmp = $('<a class="classname"></a>');
$('body').append($tmp).hide();
var color = $('.classname').css('background-color');
$tmp.remove();

EDIT: Applies the class to a hidden element.

Per Holmäng
See my comment regarding class conflict. With your example, there is no assurance that the element jquery grabs the color from is the one you created. I'd go with `var $tmp = $('<a class="classname" id="colortest"></a>'); and then set the var color to the ID.
Anthony
A: 

If there is an element on the page using that class, you can do something like:

var backgroundColor = $('.classname').css('backgroundColor');

But if nothing is using the class, I'm not familiar with any way to grab the color save from loading the .css file and parsing it in JavaScript (less than ideal).

CalebD
No it's not there on the page
halocursed
A: 

The problem is that jquery can't traverse the actual stylesheet (as far as I know), so if you have an element with two classes, you would have no way of knowing whether the color it returned was for the class you wanted or the other one. For instance:

.big { background-color: yellow; }

.mean { background-color: blue; }

The first one would be blue, but if you request the background color using:

 $(".big").css("background-color");

You would get blue, even though that class is set to yellow, since the first element is technically of the class big but it has a blue background.

I like Jonathan Sampson's idea. Create an element, make it invisible or offscreen, but give it an ID and the class you are wondering about. Then check the background color of that ID instead of checking by class:

 $("#colortest").css("background-color");
Anthony