<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>jquery-tab &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/jquery-tab/</link>
	<description>Feed of posts on WordPress.com tagged "jquery-tab"</description>
	<pubDate>Thu, 24 Dec 2009 02:01:30 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Tabs com jQuery, menu com abas e Ajax no jQuery]]></title>
<link>http://hlibco.wordpress.com/2008/06/04/tabs-jquery-menu-abas-ajax-jquery/</link>
<pubDate>Wed, 04 Jun 2008 17:23:34 +0000</pubDate>
<dc:creator>hlibco</dc:creator>
<guid>http://hlibco.wordpress.com/2008/06/04/tabs-jquery-menu-abas-ajax-jquery/</guid>
<description><![CDATA[Se você está procurando uma solução robusta e complexa de menu com abas (tabs), meu script certament]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Se você está procurando uma solução robusta e complexa de menu com abas (tabs), meu script certamente não é a solução. Mas então por quê eu cheguei a fazê-lo? Para suprir uma necessidade básica que o TABS do jQuery UI3 não atende.</p>
<p>Ao mínimo estranho alguém dizer isso né? Pois bem, se alguém ainda não conhece essa UI do jQuery vale a pena testá-la, ah, para um bom teste, abra a página de testes de abas com o Javascript do seu navegador desabilitado para ver o que acontece.</p>
<p>Simplesmente o conteúdo da Aba que deveria vir logo abaixo dela, não é carregado. E isso se explica porque este conteúdo é carregado de uma outra URL logo durante o carregamento da página e o DIV (onde entra o conteúdo) também é gerado dinamicamente, ou seja, sem JS posso te adiantar que teremos erro de layout no site. Para quem quiser testar: <a title="jQuery UI 3 Ajax Tabs" href="http://www.stilbuero.de/jquery/tabs_3/" target="_blank">http://www.stilbuero.de/jquery/tabs_3/</a></p>
<p>Bom, a idéia aqui é criar um menu com abas superiores, que mesmo sem o JS ativo ele mantenha o seu layout correto, e ao menos, o conteúdo da primeira aba ativa seja carregado. Outra funcionalidade é que cada aba possa ter 2 classes independentes, uma para o estado Ativo e outra para o estado Inativo. Digo que são classes independentes para cada aba, justamente para você poder adicionar Imagens de Fundo diferentes em cada Tab. Além disso, você pode definir para cada aba, uma mensagem de &#8220;Loading&#8221; customizada, ou usar a mensagem padrão definida pelo html, para o carregamento das abas do menu em questão.</p>
<p>Vamos ao código:</p>
<p><strong>XHTML:</strong></p>
<div class="custom_box_1">
&#60;div class=&#8221;tab_menu_container&#8221;&#62;<br />
&#60;ul id=&#8221;tab_menu_1&#8243; class=&#8221;tabs-nav&#8221; attrLoadingMessage=&#8221;Carregando&#8230;&#8221;&#62;<br />
&#60;li class=&#8221;tab_cama_on&#8221;&#62;&#60;a href=&#8221;www.exemplo.com/1&#8243;&#62;&#60;span&#62;Cama&#60;/span&#62;&#60;/a&#62;&#60;/li&#62;<br />
&#60;li class=&#8221;tab_mesa_off&#8221;&#62;&#60;a href=&#8221;www.exemplo.com/2&#8243;  attrLoadingMessage=&#8221;Carregando Mesa&#8230;&#8221;&#62;&#60;span&#62;Mesa&#60;/span&#62;&#60;/a&#62;&#60;/li&#62;<br />
&#60;li class=&#8221;tab_banho_off&#8221;&#62;&#60;a href=&#8221;www.exemplo.com/3&#8243;&#62;&#60;span&#62;Banho&#60;/span&#62;&#60;/a&#62;&#60;/li&#62;<br />
&#60;/ul&#62;<br />
&#60;div class=&#8221;tabs-container&#8221;&#62;&#60;/div&#62;<br />
&#60;/div&#62;
</div>
<p><strong>JAVASCRIPT &#8211; jQuery</strong></p>
<div class="custom_box_1">
$().ready(function() {</p>
<p>$(&#8220;.tabs-nav li a&#8221;).livequery(&#8216;click&#8217;,function() {</p>
<p>/* Set Variables */<br />
var URL     = $(this).attr(&#8216;href&#8217;);</p>
<p>var TabMenu               = $(this).parents(&#8220;li:first&#8221;).parents(&#8220;ul:first&#8221;).attr(&#8216;id&#8217;);<br />
var CurrentTab            = $(this).parents(&#8220;li:first&#8221;);<br />
var ContentArea           = $(this).parents(&#8220;li:first&#8221;).parents(&#8220;ul:first&#8221;).nextAll(&#8220;div:first&#8221;);<br />
var LoadingMessageDefault = $(this).parents(&#8220;li:first&#8221;).parents(&#8220;ul:first&#8221;).attr(&#8216;attrLoadingMessage&#8217;);<br />
var LoadingMessageCustom  = $(this).attr(&#8216;attrLoadingMessage&#8217;);</p>
<p>/* Set Up the Loading Message */<br />
if (typeof(LoadingMessageCustom) == &#8220;undefined&#8221; &#124;&#124; LoadingMessageCustom == null)<br />
{<br />
var LoadingMessage = LoadingMessageDefault;<br />
}<br />
else<br />
{<br />
var LoadingMessage = LoadingMessageCustom;<br />
}</p>
<p>var LoadingContent = &#8216;&#60;div class=&#8221;tabs-loading&#8221;&#62;&#8217; + LoadingMessage + &#8216;&#60;/div&#62;&#8217;;</p>
<p>/* Set All Tabs to the Inactive State */<br />
$(&#8220;#&#8221; + TabMenu +  &#8221; &#62; *&#8221;).each(function() {<br />
var ActiveClass   = $(this).attr(&#8216;class&#8217;).replace(&#8216;_off&#8217;,&#8221;_on&#8221;);<br />
var InactiveClass = $(this).attr(&#8216;class&#8217;).replace(&#8216;_on&#8217;,&#8221;_off&#8221;);<br />
$(this).removeClass(ActiveClass);<br />
$(this).addClass(InactiveClass);<br />
});</p>
<p>/* Set the Current Tab to the Active State */<br />
var ActiveClass   = CurrentTab.attr(&#8216;class&#8217;).replace(&#8216;_off&#8217;,&#8221;_on&#8221;);<br />
var InactiveClass = CurrentTab.attr(&#8216;class&#8217;).replace(&#8216;_on&#8217;,&#8221;_off&#8221;);<br />
CurrentTab.removeClass(InactiveClass);<br />
CurrentTab.addClass(ActiveClass);</p>
<p>$.ajax({url:  URL,<br />
data: URL,<br />
beforeSend: function() {<br />
ContentArea.html(LoadingContent);<br />
},<br />
success: function(response){<br />
ContentArea.html(response);<br />
},<br />
error: function(data) {<br />
alert(&#8216;erro&#8230;&#8217;);<br />
},<br />
type: &#8220;GET&#8221;,<br />
dataType: &#8220;html&#8221;<br />
});</p>
<p>return false;<br />
});</p>
<p>});
</p></div>
<p><strong>CSS:</strong></p>
<div class="custom_box_1">
/* CSS FROM   http://stilbuero.de/jquery/tabs_3/ */<br />
/* Caution! Ensure accessibility in print and other media types&#8230; */<br />
@media projection, screen { /* Use class for showing/hiding tab content, so that visibility can be better controlled in different media types&#8230; */<br />
.tabs-hide {<br />
display: none;<br />
}<br />
}</p>
<p>/* Hide useless elements in print layouts&#8230; */<br />
@media print {<br />
.tabs-nav {<br />
display: none;<br />
}<br />
}</p>
<p>/* Skin */<br />
.tabs-nav {<br />
list-style: none;<br />
margin: 0;<br />
padding: 0px;<br />
}<br />
.tabs-nav:after { /* clearing without presentational markup, IE gets extra treatment */<br />
display: block;<br />
clear: both;<br />
content: &#8221; &#8220;;<br />
}<br />
.tabs-nav li {<br />
border: 1px solid #ccc;  /* TAB ITEM */<br />
border-bottom: 0px;<br />
float: left;<br />
margin: 0 0 0 0px;<br />
min-width: 84px; /* be nice to Opera */<br />
}<br />
.tabs-nav a, .tabs-nav a span {<br />
display: block;<br />
padding: 0 10px;<br />
background: url(tab.png) no-repeat;<br />
}<br />
.tabs-nav a {<br />
position: relative;<br />
top: 1px;<br />
z-index: 2;<br />
padding-left: 0;<br />
color: #000 !important;<br />
font-size: 12px;<br />
font-weight: bold !important;<br />
line-height: 1.2;<br />
text-align: center;<br />
text-decoration: none !important;<br />
white-space: nowrap; /* required in IE 6 */<br />
}<br />
.tabs-nav .tabs-selected a {<br />
color: #000;<br />
}<br />
.tabs-nav .tabs-selected a, .tabs-nav a:hover, .tabs-nav a:focus, .tabs-nav a:active {<br />
background-position: 100% -150px;<br />
outline: 0; /* prevent dotted border in Firefox */<br />
}<br />
.tabs-nav a, .tabs-nav .tabs-disabled a:hover, .tabs-nav .tabs-disabled a:focus, .tabs-nav .tabs-disabled a:active {<br />
background-position: 100% -100px;<br />
}<br />
.tabs-nav a span {<br />
width: 64px; /* IE 6 treats width as min-width */<br />
min-width: 64px;<br />
height: 18px; /* IE 6 treats height as min-height */<br />
min-height: 18px;<br />
padding-top: 6px;<br />
padding-right: 0;<br />
}<br />
*&#62;.tabs-nav a span { /* hide from IE 6 */<br />
width: auto;<br />
height: auto;<br />
}<br />
.tabs-nav .tabs-selected a span {<br />
padding-top: 7px;<br />
}<br />
.tabs-nav .tabs-selected a span, .tabs-nav a:hover span, .tabs-nav a:focus span, .tabs-nav a:active span {<br />
background-position: 0 -50px;<br />
}<br />
.tabs-nav a span, .tabs-nav .tabs-disabled a:hover span, .tabs-nav .tabs-disabled a:focus span, .tabs-nav .tabs-disabled a:active span {<br />
background-position: 0 0;<br />
}<br />
.tabs-nav .tabs-selected a:link, .tabs-nav .tabs-selected a:visited, .tabs-nav .tabs-disabled a:link, .tabs-nav .tabs-disabled a:visited { /* @ Opera, use pseudo classes otherwise it confuses cursor&#8230; */<br />
cursor: text;<br />
}<br />
.tabs-nav a:hover, .tabs-nav a:focus, .tabs-nav a:active { /* @ Opera, we need to be explicit again here now&#8230; */<br />
cursor: pointer;<br />
}<br />
.tabs-nav .tabs-disabled {<br />
opacity: .4;<br />
}<br />
.tabs-container {<br />
border: 1px solid #ccc;<br />
padding: 1em 8px;<br />
background: #fff; /* declare background color for container to avoid distorted fonts in IE while fading */<br />
min-height: 150px;<br />
}<br />
.tabs-loading {<br />
padding: 0 0 0 20px;<br />
background: url(/images/loading.uitabs.gif) no-repeat 0 50%;<br />
}</p>
<p>/* Tabs Customization &#8211; ready to use image backgrounds to each tab */<br />
.tabs-nav .tab_cama_on  {background-color: #FF6600; border:1px solid #FF6600;}<br />
.tabs-nav .tab_mesa_on  {background-color: #FF6600; border:1px solid #FF6600;}<br />
.tabs-nav .tab_banho_on {background-color: #FF6600; border:1px solid #FF6600;}</p>
<p>.tabs-nav .tab_cama_off  {background-color: #FF9966; border:1px solid #FF9966;}<br />
.tabs-nav .tab_mesa_off  {background-color: #FF9966; border:1px solid #FF9966;}<br />
.tabs-nav .tab_banho_off {background-color: #FF9966; border:1px solid #FF9966;}
</p></div>
</div>]]></content:encoded>
</item>

</channel>
</rss>
