Updated JQuery Nested Tab Set with Demo

Ok, there have been some changes, but I'll try to keep it easy, with an example, and there will be an included .zip file. First, you'll need the latest JQuery build, as well as the latest version of the Tabs Plugin. Pay attention to the pathing I have created in my code snippets here.

Include the necessary JavaScript libraries and CSS files:

<script src="http://www.myserver.com/js/jquery/jquery-1.1.2.pack.js" type="text/javascript"></script>
<script src="http://www.myserver.com/js/jquery/plugins/tabs/jquery.tabs.pack.js" type="text/javascript"></script>
<link rel="stylesheet" href="http://www.myserver.com/resources/css/tabs/jquery.tabs.css" type="text/css" media="print, projection, screen">
<!-- Additional IE/Win specific style sheet (Conditional Comments) -->
<!--[if lte IE 7]>
<link rel="stylesheet" href="http://www.myserver.com/resources/css/tabs/jquery.tabs-ie.css" type="text/css" media="projection, screen">
<![endif]-->
<script src="http://www.myserver.com/js/custom/jqTabsExample.js" type="text/javascript"></script>
<link rel="stylesheet" href="http://www.myserver.com/resources/css/custom/jqTabsExample.css" type="text/css">

Next, layout your content. You'll notice that container elements have changed slightly from before.

<div id="container">
   <ul>
<li><a href="#half-frag"><span>Form 1</span></a></li>
      <li><a href="#fragment-1"><span>One</span></a></li>
<li><a href="#fragment-2"><span>Two</span></a></li>
<li><a href="#fragment-3"><span>Tabs are flexible again</span></a></li>
</ul>
<div id="half-frag">
   <form name="section-1" id="section-1" action="process.cfm" method="post" enctype="multipart/form-data">
      <ul class="anchors">
    <li><a href="#form1_step1"><span>Step 1</span></a></li>
    <li><a href="#form1_step2"><span>Step 2</span></a></li>
    <li><a href="#form1_step3"><span>Step 3</span></a></li>
    </ul>
    <div id="form1_step1" class="frmStep">
    Field 1: <input type="text" name="field1" id="field1" />
    </div>
    <div id="form1_step2" class="frmStep">
    Field 2: <input type="text" name="field2" id="field2" />
    </div>
    <div id="form1_step3" class="frmStep">
    Field 3: <input type="text" name="field3" id="field3" /><br />
    <input type="submit" name="submit" id="submit" value="Post Form" />
    </div>
   </form>
   </div>
   <div id="fragment-1">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
      Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
</div>
<div id="fragment-2">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
</div>
<div id="fragment-3">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
</div>
</div>

Your end result should look a little like this:

Field 1:
Field 2:
Field 3:
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.

The files (minus the js libraries) should be included in the Download below. Next time out I'll do the same with JQuery and the ExtJS UI Library.

Related Blog Entries

Comments
wheezer's Gravatar Fantastic! Great work

I haven't fully tested, but the nesting looks perfect, assuming this isn't a single instance of nest that is too ID dependent. Will I be able to create a 2nd nest on the same page?

Konqueror/Ubuntu fails completely. For a browser that is supposed to be so standards compliant, it only fails 90% of the time. Still, the problem is probably not great. The failure seems total, so it's probably just some detect issue?
# Posted By wheezer | 6/18/07 9:49 PM
Cutter's Gravatar @wheezer, been a real long time since I was on a *nix box, so I couldn't tell you about the Konqueror issues. This example uses an ID selector, but it may be feasible to use a class selector. I've never tried it that way so I really can't say, but the tabs() method appears to work off the object returned by JQuery $('[myselector]'), then the method parses the list elements (which do appear to require IDs). Try it out, let me know what happens.

BTW, Klaus is a great help, and is quick to answer questions regarding the plugin.
# Posted By Cutter | 6/18/07 11:35 PM
Cutter's Gravatar @Wheezer - I just did a real quick, down-and-dirty test by applying a classname of 'tabset' to both of my tab container objects (the div#container and the form#section-1) and adjusting to call to the tabs() method to $('.tabset').tabs(), and it worked flawlessly. Then I removed the ID attribute from both containers and it still worked. Pretty cool stuff.
# Posted By Cutter | 6/18/07 11:54 PM
ctraos's Gravatar exelente, gran trabajo gracias !! por el plug
# Posted By ctraos | 12/5/07 9:03 AM
paul Prusha's Gravatar Is it possible to have the top row of tabs function on-click, but the second set of tabs function on-mouseover?
# Posted By paul Prusha | 1/12/08 7:21 PM
Gene's Gravatar see http://www.smartmenus.org/forum/viewtopic.php?id=1...

Tabs Plugin conflicts with IE and smartmenus, but not FF. sure would be nice to have a workarund.

BTW, i visit nashville to visit family from time to time.

.
# Posted By Gene | 1/30/08 4:54 PM
Steve 'Cutter' Blades's Gravatar @Gene - Honestly, I haven't looked at this Tabs implementation in quite a while. I'm pretty sure that Klaus now has it integrated into the Jquery UI library, which I am almost positive is cross browser.

We had very similar issues with using swfobject and JQuery. Basically, swfobject would programatically break IEs DOM when it rendered a Flash movie. This took quite a bit to discover, and even more to replace swfobject within our code. Chance are that you are running into a very similar issue.
# Posted By Steve 'Cutter' Blades | 2/4/08 9:42 PM
Steve 'Cutter' Blades's Gravatar @Paul - I'm not certain if you are able to define which event handles tab activation. Fairly sure that it's strictly the 'click' event, but your best bet is to review the JQuery UI documentation on their site.
# Posted By Steve 'Cutter' Blades | 2/4/08 9:44 PM
sumit's Gravatar thumbs up
thanks
# Posted By sumit | 4/10/08 1:05 PM
okoy's Gravatar thumbs up
# Posted By okoy | 6/27/08 11:46 AM
Helena's Gravatar Pretty cool stuff.
# Posted By Helena | 6/29/08 5:08 AM
BlogCFC v. 5.8.001 was created by Raymond Camden. Layout inspired by bluerobot.com., with some JQuery thrown in for fun.