views:

158

answers:

2

This is driving me NUTS! I've followed the post here which just doesn't seem to be working: http://www.filamentgroup.com/lab/using_multiple_jquery_ui_themes_on_a_single_page/

I have a base theme, for examples sake it's the Smoothness theme from the jQuery UI gallery. Then I have a 'red' theme which basically colours the buttons red. Here is the theme I created.

So I go to download my theme. Choose Advanced settings, set the scope to 'red' and my theme folder name to 'red' and download. First of all I'm not entirely 100% sure which folder I'm to copy over to my project is it the 'development-bundle\themes' folder (which contains my red folder) or the '\css\red' folder?

I've tried both. The post above seems to suggest if I copy my themes folder and link to my theme in the css it'll work when I add a class of 'red' to a wrapper div or element. So I've linked the themes like so in my file:

<link type="text/css" href="themes/base/jquery.ui.all.css" rel="stylesheet" />
<link type="text/css" href="themes/red/jquery.ui.all.css" rel="stylesheet" />

The base theme loads and works all honkey doorey but the red theme doesn't. I've got a button styled like so:

<input type="submit" id="btn" value="A submit button" class="red" />

I've also tried:

<div class="red">
    <input type="submit" id="btn" value="A submit button" />
</div>

Neither work. When I remove the 'themes/base/jquery.ui.all.css' css file link the button's aren't styled at all. Crazy! I'm pulling my hair out. Where am I going wrong? Surely they should just make it easy enough to download JUST the theme folder and reference the ui.all file.

A: 

Skoders right.

You have to use the element id, class or tagname in the JQuery notation.

  • For a class: .class
  • For an id: #id
  • For the tagname: table

You'd best choose the class way, since it isn't just more classy than the others but much more usable (it can be used on multiple objects) and you don't mess up any layout elements like divs or tables. After all, the css scope justs adds the provided value to each css definition. i.e.

.ui-icon { ... }

becomes

.scope .ui-icon { ... } 

Edit: Make sure you included the right stylesheet, I got the whole thing working with the following code

<html>
    <head>
        <title>JQuery UI Theme Scope</title>
        <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
        <script type="text/javascript" src="js/jquery-ui-1.8.1.custom.min.js"></script>
        <link type="text/css" href="css/red/jquery-ui-1.8.1.custom.css" rel="stylesheet" />
        <link type="text/css" href="css/default/jquery-ui-1.8.1.default.css" rel="stylesheet" />
    </head>
    <body>
        <input type="submit" class="ui-state-default ui-corner-all" value="Submit" />
        <div class="red">
            <input type="submit" class="ui-state-default ui-corner-all" value="Submit" />
        </div>
    </body>
</html>

Don't link to the stylesheet in the "developement-bundle" directory, use the one in the "css" directory instead.

Dänu
I am using class. The problem is I can't get the red scope to load in and override the base theme by setting the class name.
lloydphillips
Take a look at my edit.
Dänu
+1  A: 

@lloydphillips:

The following URL contains sample code that demonstrates how to include scoped themes.

http://digg.com/software/jaldropdown_jqueryui_theming_and_scoping_sample

Hope that works for you.

Assign Labs