Theme/skin swap... version 2! (CSS-driven)
Without having any other information available as to the restrictions of the project, I have to say that I do not like this implementation whatsoever.

The smartest way to go about swapping css "themes" is by ONLY changing class definitions.  There are several ways to do this, but in the case of a "themed" application the most practical approach would be having seperate .css files for each theme.  

So for example, given the following HTML:

&lt;div class="header"&gt;
    &lt;div id="logo"&gt;&lt;/div&gt;
&lt;/div&gt;


...and theme-default.css:

.header { background-color: black; height: 200px; width: 100%; }
.logo { background-image: url('/images/logo.jpg'); height: 200px; width: 200px; }


...and theme-red.css:

.header { background-color: red; height: 200px; width: 100%; }
.logo { background-image: url('/images/logo-red.jpg'); height: 200px; width: 200px; }


You would only need to swap out the css URL that is being called, something like this:

$(function(){
    $("#btnChange").click(function() {
        $('link[href="theme-default.css"]').attr('href','theme-red.css');
    });
});