{{wrap}}

by abernier

HTML

<script src="http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js"></script>
<div id="tabsView"></div>
 
<script id="my-tabs" type="text/x-jquery-tmpl">
{{wrap "#tabs-layout"}}
    <h3>Tab 1</h3>
    <div>
        Content of tab 1.
        Lorem ipsum dolor <b>sit</b> amet, consectetuer adipiscing elit. Maecenas porttitor congue massa. Fusce posuere, magna sed pulvinar ultricies, purus lectus malesuada libero, sit amet commodo magna eros quis urna.
    </div>
 
    <h3>Tab 2</h3>
    <div>
        Content of tab 2.
        Lorem ipsum dolor <b>sit</b> amet, consectetuer adipiscing elit. Maecenas porttitor congue massa. Fusce posuere, magna sed pulvinar ultricies, purus lectus malesuada libero, sit amet commodo magna eros quis urna.   
    </div>
 
    <h3>Tab 3</h3>
    <div>
        Content of tab 3. 
        Lorem ipsum dolor <b>sit</b> amet, consectetuer adipiscing elit. Maecenas porttitor congue massa. Fusce posuere, magna sed pulvinar ultricies, purus lectus malesuada libero, sit amet commodo magna eros quis urna.
    </div>
{{/wrap}}
</script>
 
<script id="tabs-layout" type="text/x-jquery-tmpl">
<section class="tabs">
    <nav><ul>
        {{each $item.html("h3", true)}}<li{{if $index === selectedTabIndex}} class="active"{{/if}}>
            ${$value}
        </li>{{/each}}
    </ul></nav>
    <article>
        {{html $item.html("div")[selectedTabIndex]}}
    </article>
</section>
</script>

CSS

body {background-color:gray;}

.tabs nav li,
.tabs article {background-color:white; border:1px solid;}

.tabs nav ul {list-style:none; padding-left:0; padding-right:0; margin-top:0; margin-bottom:0;}
.tabs nav li {display:inline-block; vertical-align:bottom; padding:4px; border-bottom:none; opacity:.5; font-size:80%; position:relative; bottom:-1px; cursor:pointer;}
.tabs nav li.active {opacity:1; font-size:100%; cursor:normal;}

.tabs article {padding:10px;}

JavaScript

// Global for tracking selected tab
var selectedTabIndex = 0;
 
// Render the tab strip
$("#my-tabs").tmpl().appendTo("#tabsView");
 
// When a tab is clicked, update the tab strip
$("#tabsView").delegate(".tabs nav li:not('.active')", "click", function () {
    //console.log(this, $.tmplItem(this).data);
    selectedTabIndex = $(this).index();
    $.tmplItem(this).update();
});