<?xml version="1.0" encoding="UTF-8"?>
<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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>
<channel>
	<title>desenvolvimento para web &#187; jquery</title>
	<atom:link href="http://desenvolvimentoparaweb.com/categoria/jquery/feed/" rel="self" type="application/rss+xml" />
	<link>http://desenvolvimentoparaweb.com</link>
	<description>padrões da web, usabilidade, acessibilidade, web design, SEO, blogs e tecnologias para desenvolver a web</description>
	<lastBuildDate>Mon, 16 Aug 2010 13:00:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Melhorando a intera&#231;&#227;o em formul&#225;rios de busca</title>
		<link>http://desenvolvimentoparaweb.com/jquery/melhorando-interacao-formularios-busca/</link>
		<comments>http://desenvolvimentoparaweb.com/jquery/melhorando-interacao-formularios-busca/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 19:44:05 +0000</pubDate>
		<dc:creator>Tárcio Zemel</dc:creator>
				<category><![CDATA[jquery]]></category>
		<category><![CDATA[usabilidade]]></category>
		<category><![CDATA[dicas]]></category>
		<category><![CDATA[exemplos]]></category>
		<category><![CDATA[javascript]]></category>
		<guid isPermaLink="false">http://desenvolvimentoparaweb.com/?p=657</guid>
		<description><![CDATA[Aprenda a melhorar a intera&ccedil;&atilde;o em formul&aacute;rios de busca com poucas linhas de c&oacute;digo e aumente a usabilidade de seu form de busca]]></description>
			<content:encoded><![CDATA[<p><img src="http://desenvolvimentoparaweb.com/wp-content/uploads/2010/08/melhorar-interacao-formularios-busca.jpg" alt="Melhorando a intera&ccedil;&atilde;o em formul&aacute;rios de busca" title="" width="250" height="250" class="aligncenter size-full wp-image-658" /></p>
<p>Melhorar a intera&ccedil;&atilde;o do campo de busca de um site permite que as pessoas que usam tal formul&aacute;rio para buscar tenham uma melhor experi&ecirc;ncia de uso (leia-se: <strong>usabilidade</strong>). Com pequenos detalhes, um pouquinho de bom-senso e algumas poucas linhas de jQuery, &eacute; poss&iacute;vel promover efeitos interessante no campo de busca.</p>
<p>Para ficar claro, ser&aacute; abordada a seguinte intera&ccedil;&atilde;o:</p>
<ul>
<li>Campo de busca &eacute; &#8220;populado&#8221; com um termo pr&eacute;-definido;</li>
<li>Quando o campo recebe o foco, caso tenha o termo pr&eacute;-definido, &eacute; limpo para a pessoa escrever o que pretende;</li>
<li>Quando o campo perde o foco, se o conte&uacute;do for o mesmo do termo pr&eacute;-definido (ou em branco), este termo reaparece;</li>
<li>Quando o bot&atilde;o &eacute; pressionado, caso o valor seja termo pr&eacute;-definido ou esteja em branco, o form n&atilde;o submete e o foco passa ao campo apropriado.</li>
</ul>
<h3>O formul&aacute;rio de busca</h3>
<p>Um exemplo de um formul&aacute;rio simples de busca, que pode ser usado em &#8220;sites reais&#8221;, profissionalmente, pode ser do tipo:</p>
<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">form</span> <span style="color: #000066;">method</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;get&quot;</span> <span style="color: #000066;">action</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;script.php&quot;</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;form&quot;</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;form&quot;</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">input</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text&quot;</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;form-input&quot;</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;form-input&quot;</span> <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Snippets ou Scripts&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">input</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;submit&quot;</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;form-submit&quot;</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;form-submit&quot;</span> <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Buscar&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">form</span>&gt;</span></pre></div></div>
<h3>Termo pr&eacute;-definido</h3>
<p>A express&atilde;o &#8220;termo pr&eacute;-definido&#8221; &eacute; mais adequada, j&aacute; que cada site pede um &#8220;label&#8221; de indica&ccedil;&atilde;o diferente, conforme as especifica&ccedil;&otilde;es e necessidades deste. Algumas pessoas preferem o termo &#8220;Buscar&#8221; ou &#8220;Procurar&#8221; com um bot&atilde;o de label &#8220;OK&#8221; ou &#8220;Vai&#8221;; j&aacute; alguns sites preferem explicitar a fun&ccedil;&atilde;o da busca com algo do tipo &#8220;Produtos ou Servi&ccedil;os&#8221;, acompanhado de um bot&atilde;o com o label &#8220;Buscar&#8221; (o que &eacute; uma abordagem bem interessante).</p>
<p>De uma maneira ou de outra, &eacute; preciso definir que termo ser&aacute; esse. Para nosso exemplo, vamos supor que seja um site voltado a <a href="http://desenvolvimentoparaweb.com/">desenvolvimento web</a> e o termo pr&eacute;-definido ser&aacute; &#8220;<strong>Snippets ou Scripts</strong>&#8220;. Vamos criar uma express&atilde;o regular simples com uma parte do termo pr&eacute; definido:</p>
<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">patt <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> RegExp<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Snippets ou'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>
<p>E por que n&atilde;o colocar a express&atilde;o inteira? Tamb&eacute;m poderia ser feito, mas o &#8220;esfor&ccedil;o&#8221; para identificar o padr&atilde;o aumenta em rela&ccedil;&atilde;o ao tamanho/complexidade da mesma. Sinta-se &agrave; vontade para fazer v&aacute;rios testes.</p>
<h3>Melhorando a intera&ccedil;&atilde;o do formul&aacute;rio de busca</h3>
<p>A melhora da intera&ccedil;&atilde;o se de duas formas:</p>
<ul>
<li>Inter&ccedil;&atilde;o com o campo;</li>
<li>Intera&ccedil;&atilde;o com o bot&atilde;o;</li>
</ul>
<h4>Intera&ccedil;&atilde;o com o campo</h4>
<p>Segundo o planejamento, o que se pretende &eacute; &#8220;Quando o campo recebe o foco, caso tenha o termo pr&eacute;-definido, &eacute; limpo para a pessoa escrever o que pretende&#8221;. A l&oacute;gica &eacute; testar a express&atilde;o regular: caso o teste seja positivo, o campo &eacute; limpo e recebe o foco para a pessoa escrever. Ao perder o foco, &#8220;se o conte&uacute;do for o mesmo do termo pr&eacute;-definido (ou em branco), este termo reaparece&#8221;.</p>
<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#form-input'</span><span style="color: #009900;">&#41;</span>
.<span style="color: #000066;">focus</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>patt.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
.<span style="color: #000066;">blur</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Snippets ou Scripts'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>
<h4>Intera&ccedil;&atilde;o com o bot&atilde;o</h4>
<p>A <strong>intera&ccedil;&atilde;o com o bot&atilde;o</strong> tamb&eacute;m &eacute; importante &#8211; e, infelizmente, &eacute; um ponto esquecido por muitos desenvolvedores. A ideia &eacute;, ao se clicar no bot&atilde;o, testar se a express&atilde;o &#8220;bate&#8221; ou o campo est&aacute; em branco e, caso seja um desses casos, dar o foco no campo.</p>
<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#form-submit'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">click</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>patt.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#form-input'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#form-input'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#busca-bottom'</span><span style="color: #009900;">&#41;</span>.<span style="color: #000066;">focus</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// Impede que o form seja submetido</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>
<p>N&atilde;o &eacute; necess&aacute;rio dar a instru&ccedil;&atilde;o de limpar o campo no foco porque a pe&ccedil;a de script anterior, sobre a intera&ccedil;&atilde;o com o campo, j&aacute; faz isso.</p>
<h4>JavaScript final</h4>
<p>Juntando os peda&ccedil;os de c&oacute;digos, j&aacute; devidamente explicados, tem-se o seguinte:</p>
<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#form-input'</span><span style="color: #009900;">&#41;</span>
.<span style="color: #000066;">focus</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>patt.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
.<span style="color: #000066;">blur</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Snippets ou Scripts'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#form-submit'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">click</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>patt.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#form-input'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#form-input'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#busca-bottom'</span><span style="color: #009900;">&#41;</span>.<span style="color: #000066;">focus</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// Impede que o form seja submetido</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>
<h3>Conclus&atilde;o sobre a melhora da intera&ccedil;&atilde;o em formul&aacute;rios de busca</h3>
<p>Certamente essas n&atilde;o s&atilde;o as &uacute;nicas melhorias cab&iacute;veis para a <strong>melhoria de usabilidade</strong> e <strong>intera&ccedil;&atilde;o</strong> de um formul&aacute;rio de busca simples, mas, certamente, s&atilde;o 2 medidas muito bem-vindas para que a experi&ecirc;ncia e &#8220;agradabilidade&#8221; sejam melhoradas.</p>
<p>Poderia haver, por exemplo, uma <em>tooltip</em> com o que se pode encontrar no site e/ou fornecendo algum exemplo de termo; implementar uma solu&ccedil;&atilde;o de <em>autocomplete</em>; ou, ao inv&eacute;s de limpar o campo, apenas selecionar todo o termo para, j&aacute; digita&ccedil;&atilde;o, substitu&iacute;-lo pelo o que est&aacute; sendo digitado. Depende da necessidade do projeto.</p>
<p>E voc&ecirc;, tem alguma <strong>dica ou solu&ccedil;&atilde;o interessante</strong> para melhorar a intera&ccedil;&atilde;o em formul&aacute;rios de busca?</p>
<h3  class="related_post_title">Artigos Relacionados</h3><ul class="related_post"><li><a href="http://desenvolvimentoparaweb.com/miscelanea/sobre-parcerias-de-trabalhos-de-desenvolvimento-web/" title="Sobre parcerias de trabalhos em desenvolvimento web">Sobre parcerias de trabalhos em desenvolvimento web</a></li><li><a href="http://desenvolvimentoparaweb.com/usabilidade/8-caracteristicas-de-user-interfaces-ui-de-sucesso/" title="8 características de User Interfaces (UI) de sucesso">8 características de User Interfaces (UI) de sucesso</a></li><li><a href="http://desenvolvimentoparaweb.com/jquery/como-criar-sumarios-dinamicamente-com-o-toc-table-of-contents-jquery-plugin-jquerytoc/" title="Como criar sumários dinamicamente com o TOC (Table of Contents) jQuery plugin">Como criar sumários dinamicamente com o TOC (Table of Contents) jQuery plugin</a></li><li><a href="http://desenvolvimentoparaweb.com/seo/erros-comuns-desenvolvimento-web-campanhas-seo/" title="Erros comuns em desenvolvimento web para campanhas de SEO">Erros comuns em desenvolvimento web para campanhas de SEO</a></li><li><a href="http://desenvolvimentoparaweb.com/xhtml/textarea-dicas-truques-textarea/" title="Textarea: dicas e truques que você sempre quis saber">Textarea: dicas e truques que você sempre quis saber</a></li><li><a href="http://desenvolvimentoparaweb.com/miscelanea/8-maneiras-de-melhorar-a-performance-de-um-site/" title="8 maneiras de melhorar a performance de um site">8 maneiras de melhorar a performance de um site</a></li><li><a href="http://desenvolvimentoparaweb.com/javascript/melhores-editores-wysiwyg-para-seu-projeto/" title="Melhores editores WYSIWYG para seu projeto">Melhores editores WYSIWYG para seu projeto</a></li><li><a href="http://desenvolvimentoparaweb.com/wordpress/15-comandos-sql-wordpress/" title="15 fantásticos comandos SQL para WordPress">15 fantásticos comandos SQL para WordPress</a></li><li><a href="http://desenvolvimentoparaweb.com/usabilidade/recursos-usabilidade/" title="Recursos de usabilidade grátis">Recursos de usabilidade grátis</a></li><li><a href="http://desenvolvimentoparaweb.com/miscelanea/perguntas-cliente-antes-depois-projeto/" title="Perguntas ao cliente para antes e depois de um projeto">Perguntas ao cliente para antes e depois de um projeto</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://desenvolvimentoparaweb.com/jquery/melhorando-interacao-formularios-busca/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>8 dicas para fazer c&#243;digos melhores com jQuery</title>
		<link>http://desenvolvimentoparaweb.com/jquery/8-dicas-fazer-codigos-melhores-jquery/</link>
		<comments>http://desenvolvimentoparaweb.com/jquery/8-dicas-fazer-codigos-melhores-jquery/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 17:18:58 +0000</pubDate>
		<dc:creator>Tárcio Zemel</dc:creator>
				<category><![CDATA[jquery]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[programação]]></category>
		<guid isPermaLink="false">http://www.desenvolvimentoparaweb.com/?p=482</guid>
		<description><![CDATA[8 dicas para fazer c&oacute;digos melhores com jQuery, otimizar seus c&oacute;digos ter uma melhor performance do melhor framework javascript da atualidade!]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.desenvolvimentoparaweb.com/wp-content/uploads/2010/01/jquery-dicas-codigos-melhores-jquery.jpg"><img class="aligncenter size-full wp-image-522" src="http://www.desenvolvimentoparaweb.com/wp-content/uploads/2010/01/jquery-dicas-codigos-melhores-jquery.jpg" alt="" width="450" height="253" /></a></p>
<p>jQuery &eacute; um <em>framework javascript</em> que <span style="text-decoration: line-through;">est&aacute; se tornando</span> se tornou incrivelmente popular. &Eacute; r&aacute;pido, f&aacute;cil de usar e criar plugins personalizados e componentes s&atilde;o feitos rapidamente. Atualmente, todo mundo &eacute; um desenvolvedor jQuery e o reposit&oacute;rio de <em>plugins</em> est&aacute; praticamente explodindo com a adi&ccedil;&otilde;es praticamente di&aacute;rias.</p>
<p>&Agrave; luz de tudo isto, aqui est&atilde;o<strong> 8 excelentes dicas para fazer c&oacute;digos melhores com jQuery</strong> e se tornar um melhor programador em jQuery que voc&ecirc; deve considerar antes de come&ccedil;ar seu pr&oacute;ximo projeto.</p>
<div class="artigo-traduzido">Este &eacute; um artigo traduzido do original “<a href="http://monc.se/kitchen/150/eight-tips-that-makes-you-a-better-jquery-coder">Eight Tips That Makes You a Better jQuery</a>“, do blog <a href="http://monc.se/kitchen/">David&#8217;s Kitchen</a>, e sofreu pequenas adapta&ccedil;&otilde;es.</div>
<h3>Mantenha a acessibilidade atrav&eacute;s da degrada&ccedil;&atilde;o</h3>
<p>Com jQuery ser popular &eacute; assim, mais e mais pessoas est&atilde;o escrevendo <em>plugins</em> e criando pacotes de componentes que est&atilde;o prontos para uso. Mas alguns desenvolvedores tem em mente que projetos <em>online</em> tamb&eacute;m devem funcionar sem <em>javascript</em> ativado. Essa &eacute; uma das principais raz&otilde;es para fazer javascript n&atilde;o obstrusivo. Como exemplo, vejam:</p>
<p>CSS</p>
<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #6666ff;">.animate</span> <span style="color: #00AA00;">&#123;</span>
<span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span><span style="color: #993333;">red</span><span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span><span style="color: #993333;">none</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>
<p>jQuery</p>
<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.animate'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">fadeIn</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>
<p>Usaria jQuery para dar um fadeIn() com a classe &#8220;animate&#8221;. Mas se o <em>javascript</em> estiver desativado, o navegador ainda analisa a CSS e, naturalmente, os elementos nunca ser&atilde;o mostrados!</p>
<p>Ao inv&eacute;s disso, tenha sempre o h&aacute;bito de separar &#8220;javascript CSS&#8221; e &#8220;CSS puro&#8221;. Tente isto:</p>
<p>CSS</p>
<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #6666ff;">.animate</span> <span style="color: #00AA00;">&#123;</span>
<span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span><span style="color: #993333;">red</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #6666ff;">.animate_js</span> <span style="color: #00AA00;">&#123;</span>
<span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span><span style="color: #993333;">none</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>
<p>jQuery</p>
<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.animate'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'animate_js'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">fadeIn</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>
<p>Dessa forma, voc&ecirc; pode estilizar os elementos para cada situa&ccedil;&atilde;o e manter a degrada&ccedil;&atilde;o de uma forma sensata. Como sempre, sem testar seu c&oacute;digo <em>javascript </em>ativado antes da implementa&ccedil;&atilde;o.</p>
<h3>Mover efeitos visuais para a camada de apresenta&ccedil;&atilde;o</h3>
<p>Quando for escrever <em>javascript</em>, mantenha sempre o foco nos <strong>comportamentos</strong>. jQuery n&atilde;o &eacute; CSS, ent&atilde;o esteja atento as diferen&ccedil;as fundamentais entre a apresenta&ccedil;&atilde;o e comportamento.</p>
<p>Por exemplo, quase sempre &eacute; uma boa ideia adicionar classes ao inv&eacute;s de trabalhar com somente propriedades CSS. Evite <em>fades</em> e &#8220;glamour&#8221; nas fun&ccedil;&otilde;es. Guarde os efeitos para uma fant&aacute;stica apresenta&ccedil;&atilde;o, mas cuidado no uso em fun&ccedil;&otilde;es <em>javascript </em>- nem todos compartilham seu gosto visual!</p>
<h3>Usar Firebug e console.log</h3>
<p><a href="http://www.getfirebug.com/">Firebug</a> &eacute; seu amigo quando est&aacute; desenvolvendo com<strong> jQuery</strong> &#8211; na verdade, no desenvolvimento <em>web</em>, geral. E assim &eacute; o comando <strong>console.log</strong>, que graciosamente substitui o alert() chato.</p>
<p>Basta digitar <strong>console.log()</strong> para debugar sempre que voc&ecirc; precisar no seu c&oacute;digo. Mas lembre-se de remover essas instru&ccedil;&otilde;es antes da produ&ccedil;&atilde;o, uma vez que muitos navegadores ter&atilde;o conflitos, incluindo o IE (claro!).</p>
<p>E, para outras funcionalidades do Firebug, confira a <a href="http://getfirebug.com/console.html">Console API</a>.</p>
<h3>Definir padr&otilde;es sensatos e utilizar uma quantidade limitada de par&acirc;metros</h3>
<p>Quando voc&ecirc; &eacute; mordido pelo inseto jQuery e come&ccedil;a a criar plugins, frequentemente tenta maximizar o n&uacute;mero de par&acirc;metros para tornar o desenvolvimento o mais flex&iacute;vel poss&iacute;vel.</p>
<p>Isso tudo &eacute; muito nobre, mas que fique claro e que tente n&atilde;o confundir o desenvolvedor <em>web</em> com par&acirc;metros min&uacute;sculos que quase n&atilde;o fazem diferen&ccedil;a (como <em>fades</em>, velocidades, etc.). Ao inv&eacute;s disso, passe par&agrave;metro de objeto e defina padr&otilde;es sens&iacute;veis. Seu c&oacute;digo n&atilde;o precisa fazer literalmente tudo!</p>
<h3>Encapsular seu pr&oacute;prio <em>alias</em></h3>
<p>jQuery n&atilde;o &eacute; o &uacute;nico framework que usa a abrevia&ccedil;&atilde;o de d&oacute;lar ($). V&aacute;rios <em>plugins </em>JQuery e trechos de c&oacute;digo tamb&eacute;m o utilizam para definir <em>onDomReady callbacks</em> e fun&ccedil;&otilde;es de seletores CSS, mas voc&ecirc; pode acabar (e evitar) com esse conflitos.</p>
<p>Voc&ecirc; pode usar seu pr&oacute;prio alias (que pode continuar sendo o &#8220;$&#8221;) desse jeito:</p>
<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">jQuery<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// código usando alias próprio</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>
<p>O exemplo acima usa tanto o atalho para $(document).ready(), quanto o argumento para escrever c&oacute;digo jQuery em <em>failsafe</em> usando o <em>alias</em> $, sem contar com o <em>alias</em> global. Voc&ecirc; pode e deve, igualmente, integrar o $ quando for criar plugins:</p>
<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// código do plugin, usando $ quantas vezes quiser</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span>jQuery<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>
<h3>Definir <em>callbacks</em> pr&oacute;prios</h3>
<p>Quando estiver criando plugins para jQuery, &eacute; uma boa id&eacute;ia deixar o desenvolvedor atribuir <em>callbacks </em>pr&oacute;prios como como par&acirc;metros de fun&ccedil;&otilde;es, tornando poss&iacute;vel personalizar ainda mais o <em>plugin</em>. Ent&atilde;o, ao inv&eacute;s de for&ccedil;ar os efeitos de <em>callback</em> dentro do <em>plugin</em>, engatilhe fun&ccedil;&otilde;es de eventos e defina os efeitos livremente.</p>
<p>Aqui est&aacute; um exemplo em que passamos a fun&ccedil;&atilde;o onFade para o <em>plugin</em>, escrito como um simples <em>plugin </em>fadeIn:</p>
<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">/*
This plugin fades an element and triggers the onFade when completed
&nbsp;
EXAMPLE USAGE:
  $('.fademe').customFade({
    fadeSpeed: 50,
    onFade: function(elem) {
      console.log(elem+' has faded!')
    }
  });
*/</span>
&nbsp;
jQuery.<span style="color: #660066;">fn</span>.<span style="color: #660066;">customFade</span><span style="color: #009900;">&#40;</span>$params<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #003366; font-weight: bold;">var</span> $defaults <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
    fadeSpeed<span style="color: #339933;">:</span> <span style="color: #CC0000;">1000</span><span style="color: #339933;">,</span>
    onFade<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>element<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
  <span style="color: #003366; font-weight: bold;">var</span> $p <span style="color: #339933;">=</span> $.<span style="color: #660066;">extend</span><span style="color: #009900;">&#40;</span>$defaults<span style="color: #339933;">,</span> $params<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">fadeIn</span><span style="color: #009900;">&#40;</span>$p.<span style="color: #660066;">fadeSpeed</span><span style="color: #339933;">,</span>$p.<span style="color: #660066;">onFade</span><span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>
<h3>Ficar atento com as diferen&ccedil;as entre navegadores</h3>
<p>jQuery &eacute; bastante propenso a ser <em>crossbrowser</em>. Mas ainda existem falhas, especialmente com os navegadores como o Safari, que tem um <em>trigger</em> diferente para onLoad, e IE, evidentemente. Sempre teste em v&aacute;rios navegadores e preste muita aten&ccedil;&atilde;o em quando e onde as falhas ocorrem.</p>
<h3>N&atilde;o ser excessivo e definir seu prop&oacute;sito</h3>
<p>Certifique-se de que n&atilde;o est&aacute; usando jQuery apenas porque voc&ecirc; pode. Sempre analise suas necessidades e tenha uma ideia clara do que voc&ecirc; quer alcan&ccedil;ar antes mesmo de escrever a primeira linha. Fa&ccedil;a <em>sketches </em>de seu c&oacute;digo e discuta suas ideias com seus pares antes da codifica&ccedil;&atilde;o (se n&atilde;o estiver trabalhando sozinho, claro).</p>
<p>N&atilde;o reinvente a roda a menos que voc&ecirc; esteja fazendo isso para aprender e/ou se educar, analise o c&oacute;digo de <em>plugins</em> de qualidade para inspirar-se e ver o que tem sido feito por bons programadores.</p>
<p>Bons c&oacute;digos!</p>
<h3  class="related_post_title">Artigos Relacionados</h3><ul class="related_post"><li><a href="http://desenvolvimentoparaweb.com/miscelanea/jetpack-explorando-novas-maneiras-de-ampliar-e-personalizar-a-web/" title="Jetpack: explorando novas maneiras de ampliar e personalizar a web">Jetpack: explorando novas maneiras de ampliar e personalizar a web</a></li><li><a href="http://desenvolvimentoparaweb.com/php/dicas-para-otimizar-codigos-php/" title="Dicas para otimizar códigos PHP">Dicas para otimizar códigos PHP</a></li><li><a href="http://desenvolvimentoparaweb.com/jquery/melhorando-interacao-formularios-busca/" title="Melhorando a interação em formulários de busca">Melhorando a interação em formulários de busca</a></li><li><a href="http://desenvolvimentoparaweb.com/php/urls-amigaveis-slug-a-wordpress/" title="URLs amigáveis (slug) à WordPress">URLs amigáveis (slug) à WordPress</a></li><li><a href="http://desenvolvimentoparaweb.com/miscelanea/8-maneiras-de-melhorar-a-performance-de-um-site/" title="8 maneiras de melhorar a performance de um site">8 maneiras de melhorar a performance de um site</a></li><li><a href="http://desenvolvimentoparaweb.com/javascript/melhores-editores-wysiwyg-para-seu-projeto/" title="Melhores editores WYSIWYG para seu projeto">Melhores editores WYSIWYG para seu projeto</a></li><li><a href="http://desenvolvimentoparaweb.com/usabilidade/user-interface-dicas-rapidas/" title="User Interface em dicas rápidas">User Interface em dicas rápidas</a></li><li><a href="http://desenvolvimentoparaweb.com/wordpress/otimizacao-wordpress-performance-desempenho-blog-site/" title="Otimização WordPress: aumente a performance e desempenho de seu blog / site">Otimização WordPress: aumente a performance e desempenho de seu blog / site</a></li><li><a href="http://desenvolvimentoparaweb.com/jquery/como-criar-sumarios-dinamicamente-com-o-toc-table-of-contents-jquery-plugin-jquerytoc/" title="Como criar sumários dinamicamente com o TOC (Table of Contents) jQuery plugin">Como criar sumários dinamicamente com o TOC (Table of Contents) jQuery plugin</a></li><li><a href="http://desenvolvimentoparaweb.com/wordpress/newsletter-no-wordpress-com-o-plugin-ajax-newsletter-wp-ajax-newsletter/" title="Newsletter no WordPress com o plugin Ajax Newsletter (wp-ajax-newsletter)">Newsletter no WordPress com o plugin Ajax Newsletter (wp-ajax-newsletter)</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://desenvolvimentoparaweb.com/jquery/8-dicas-fazer-codigos-melhores-jquery/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>NextGEN Gallery com SexyLightBox: sua galeria de imagens mais sexy</title>
		<link>http://desenvolvimentoparaweb.com/jquery/nextgen-gallery-com-sexylightbox-sua-galeria-de-imagens-mais-sexy/</link>
		<comments>http://desenvolvimentoparaweb.com/jquery/nextgen-gallery-com-sexylightbox-sua-galeria-de-imagens-mais-sexy/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 17:38:10 +0000</pubDate>
		<dc:creator>Tárcio Zemel</dc:creator>
				<category><![CDATA[indicações]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[tutoriais]]></category>
		<category><![CDATA[web design]]></category>
		<guid isPermaLink="false">http://www.desenvolvimentoparaweb.com/?p=491</guid>
		<description><![CDATA[Aumente a experi&ecirc;ncia dos visitantes de seu site de forma surpreendente atrav&eacute;s de uma galeria de imagens fant&aacute;stica!]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-494" title="NextGen Gallery com SexLightbox no Wordpress" src="http://www.desenvolvimentoparaweb.com/wp-content/uploads/2009/11/nextgen-gallery-sexlightbox-wordpress.jpg" alt="NextGen Gallery com SexLightbox no Wordpress" width="400" height="232" /></p>
<p>&Eacute; fato que o <em>plugin</em> <a title="NextGEN Gallery." href="http://wordpress.org/extend/plugins/nextgen-gallery/">NextGEN Gallery</a> do WordPress &eacute; o melhor quando o assunto &eacute; <strong>gerenciamento de galerias de imagens</strong>. Com NextGEN Gallery &eacute; poss&iacute;vel criar galerias facilmente, acrescentar/retirar imagens em modo <em>batch</em> (&eacute; poss&iacute;vel enviar um arquivo .zip e ele &#8220;abre&#8221; as imagens numa galeria), d&aacute; pra criar &aacute;lbuns, copiar/transferir imagens entre galerias, inserir marca d&#8217;&aacute;gua automaticamente, enfim, o NextGEN Gallery &eacute; bem conhecido na comunidade WordPress e certamente est&aacute; no &#8220;Top 5&#8243; de plugins!</p>
<p>Existe, tamb&eacute;m, apesar n&atilde;o ser t&atilde;o conhecido, um script &agrave; &#8220;lightbox&#8221; muito bonito e interessante: <a title="Site do SexyLightbox" href="http://www.coders.me/web-html-js-css/javascript/sexy-lightbox-2">SexyLightBox</a>. Como &eacute; poss&iacute;vel ver em sua p&aacute;gina, o efeito que ele oferece &eacute; bem interessante e, de certa maneira, diferenciado dos outros <em>lightboxes</em> que encontramos por a&iacute; (&ecirc;nfase ao fato de as imagens serem apresentadas em tamanho completo respeitando a resolu&ccedil;&atilde;o do navegador do visitante).</p>
<p>Aproveitando que o <strong>NextGEN Gallery</strong> oferece a possibilidade de se utilizar <em>script </em>de terceiros para a exibi&ccedil;&atilde;o de suas galerias e somado ao fato de que o <strong>SexyLightBox</strong> &eacute; realmente interessante&#8230; <strong>NextGEN Gallery + SexyLightBox = Galerias de Imagens Sexy!</strong></p>
<h3>Baixando, instalando e configurando NextGEN Gallery</h3>
<p>O primeiro passo &eacute; baixar e instalar NextGEN Gallery no seu WordPress. Devido ao fato de eles serem de &#8220;naturezas&#8221; diferentes (o primeiro &eacute; um plugin do WordPress; o segundo &eacute; um script que pode ser usado em qualquer tipo de site), a maneira de instalar e usar cada um deles &eacute; diferente.</p>
<p>Para o <strong>NextGEN Gallery</strong>, devido ao fato de ser um <strong>plugin do WordPress</strong>, a instala&ccedil;&atilde;o &eacute; aquela, mesma, que j&aacute; estamos acostumados:</p>
<ul>
<li><a href="http://wordpress.org/extend/plugins/nextgen-gallery/">Baixar o NextGEN Gallery</a>;</li>
<li>Descompactar em sua pasta <strong>wp-content/plugins</strong>;</li>
<li>Habilitar o plugin.</li>
</ul>
<p>Depois, perceba que aparece em seus menus um novo m&oacute;dulo, &#8220;Gallery&#8221;, com subop&ccedil;&otilde;es para controle do NextGen.</p>
<p>&Eacute; poss&iacute;vel traduzir as op&ccedil;&otilde;es para v&aacute;rios idiomas, inclusive L&iacute;ngua Portuguesa. <a href="http://alexrabe.de/wordpress-plugins/nextgen-gallery/languages/">Baixe o pacote Portuguese / Brazilian Portugu&ecirc;s [pt_BR]</a> nas tradu&ccedil;&otilde;es oficiais e fa&ccedil;a upload do arquivo <strong>.mo</strong> para <strong>wp-content/plugins/nextgen-gallery/lang</strong> e, automaticamente, os menus ser&atilde;o traduzidos.</p>
<div id="attachment_492" class="wp-caption aligncenter" style="width: 155px"><img class="size-full wp-image-492" title="Painel NextGen Gallery no Wordpress" src="http://www.desenvolvimentoparaweb.com/wp-content/uploads/2009/11/painel-nextgen-gallery-wordpress.gif" alt="Painel NextGen Gallery no Wordpress" width="145" height="287" /><p class="wp-caption-text">Painel NextGen Gallery em L&iacute;ngua Portuguesa</p></div>
<p>Para j&aacute; preparar o NextGen para trabalhar com o SexyLightBox, acesse em seu painel WordPress <strong>Galeria &gt; Op&ccedil;&otilde;es &gt; Efeitos</strong> e altere as op&ccedil;&otilde;es para:</p>
<ul>
<li><strong>Efeito Javascript para miniaturas:</strong> Personalizado;</li>
<li><strong>Linha de c&oacute;digo do link:</strong> rel=&#8221;sexylightbox&#8221;.</li>
</ul>
<div id="attachment_493" class="wp-caption aligncenter" style="width: 455px"><img class="size-full wp-image-493" title="Configura&ccedil;&atilde;o NextGen Gallery para SexyLightbox" src="http://www.desenvolvimentoparaweb.com/wp-content/uploads/2009/11/painel-nextgen-gallery-wordpress-sexy-lightbox.gif" alt="Configura&ccedil;&atilde;o NextGen Gallery para SexyLightbox" width="445" height="250" /><p class="wp-caption-text"> </p></div>
<h3>Baixando, instalando e configurando SexyLighbox</h3>
<p>V&aacute; at&eacute; o site oficial do SexyLighbox para <a href="http://www.coders.me/web-html-js-css/javascript/sexy-lightbox-2#download">fazer download do SexyLightbox</a>. Depois, &eacute; preciso subir a pasta descompactada para o servidor.</p>
<p>N&atilde;o sei voc&ecirc;, mas eu costumo criar uma pasta &#8220;js&#8221; dentro do meu tema para tudo ficar organizado e eu poder usar as fun&ccedil;&otilde;es de caminho relativo do WordPress tranquilamente. Ent&atilde;o, uma estrutura que eu usaria para o caso seria <strong>wp-content/themes/MEU-TEMA/js/sexy-lightbox-2.3</strong> (essa &eacute; a vers&atilde;o mais atual no dia de publica&ccedil;&atilde;o deste artigo).</p>
<p>Agora &eacute; o momento de chamar o SexyLightbox para que funcione em seu tema. H&aacute; <strong>muitas</strong> maneiras diferentes de mexer com chamadas a scripts no WordPress; no caso, vou mostrar uma delas e, em artigos futuros, vou comentando sobre as outras (essa &eacute; a deixa para voc&ecirc; <a href="http://www.desenvolvimentoparaweb.com/feed">assinar o feed do desenvolvimento para web</a>).</p>
<p>Uma coisa importante &eacute; que o SexyLighbox n&atilde;o &eacute; feito para ser usado em <em>standalone</em>, ele deve estar associado a jQuery ou Mootools. Obviamente vamos usar jQuery para o servi&ccedil;o!  ;-)</p>
<p>Ent&atilde;o, o c&oacute;digo com as respectivas chamadas a scripts e folhas de estilo fica assim:</p>
<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">&lt;script type=&quot;text/javascript&quot; src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;&lt;?php print get_bloginfo('template_url') ?&gt;/js/sexy-lightbox-2.3/jQuery/jquery.easing.1.3.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;&lt;?php print get_bloginfo('template_url') ?&gt;/js/sexy-lightbox-2.3/jQuery/sexylightbox.v2.3.jquery.js&quot;&gt;&lt;/script&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;&lt;?php print get_bloginfo('template_url') ?&gt;/js/sexy-lightbox-2.3/jQuery/sexylightbox.css&quot; type=&quot;text/css&quot; media=&quot;all&quot; /&gt;
<span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;</span>
$<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">ready</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    SexyLightbox.<span style="color: #660066;">initialize</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>color<span style="color: #339933;">:</span><span style="color: #3366CC;">'white'</span><span style="color: #339933;">,</span> imagesdir<span style="color: #339933;">:</span> <span style="color: #3366CC;">'&lt;?php print get_bloginfo('</span>template_url<span style="color: #3366CC;">') ?&gt;/js/sexy-lightbox-2.3/jQuery/sexyimages'</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></div></div>
<p>Perceba que alguns par&acirc;metros foram passados na inicializa&ccedil;&atilde;o do script do SexyLightbox. O grande &#8220;trunfo&#8221; &eacute; usar o par&acirc;metro <strong>imagesdir</strong>, porque na documenta&ccedil;&atilde;o est&aacute; errado!</p>
<h4>Personalizando seu SexyLighbox</h4>
<p>Uma coisa muito boa &eacute; que h&aacute; uma pasta &#8220;PSDs&#8221; no SexyLighbox para que cada um posso personalizar a apar&ecirc;ncia como quiser. Ent&atilde;o, voc&ecirc; pode alterar a cor de fundo, texto, alterar os elementos (setinhas, etc) e usar da forma que voc&ecirc; quiser. Ent&atilde;o quando voc&ecirc; alterar a cor de fundo para o SexyLighbox ficar com a identidade visual de seu site, voc&ecirc; vai perceber que a parte do meio da moldura ainda permanece intacta. No caso, voc&ecirc; deve fazer um pequeno acr&eacute;scimo de CSS em seu arquivo padr&atilde;o (pode ser ao final):</p>
<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#SLB-Contenido</span> <span style="color: #00AA00;">&#123;</span>
<span style="color: #000000; font-weight: bold;">border-color</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#HEXADECIMAL</span> !important<span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>
<h3>Agora voc&ecirc; tem galerias Sexy!</h3>
<p>Com isso, agora voc&ecirc; galerias de imagens <strong>automatizadas</strong> e <strong>sexy</strong>! Para tirar melhor proveito disso, estude a documenta&ccedil;&atilde;o do NextGen Gallery (al&eacute;m dos <a href="http://alexrabe.de/forums/">f&oacute;runs</a>, os <a href="http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/">tutoriais sobre NextGen de David Potter</a> devem ajudar) e do SexyLightbox para incrementar/customizar ainda mais as galerias de imagens de seu site para que fiquem pr&aacute;ticas, bonitas e com excelente performance.</p>
<p>E capriche nas imagens!  ;-)</p>
<h3  class="related_post_title">Artigos Relacionados</h3><ul class="related_post"><li><a href="http://desenvolvimentoparaweb.com/jquery/jquery-mais-50-dos-melhores-tutoriais-apostilas-e-exemplos/" title="jQuery: mais 50 dos melhores tutoriais, apostilas e exemplos">jQuery: mais 50 dos melhores tutoriais, apostilas e exemplos</a></li><li><a href="http://desenvolvimentoparaweb.com/xhtml/textarea-dicas-truques-textarea/" title="Textarea: dicas e truques que você sempre quis saber">Textarea: dicas e truques que você sempre quis saber</a></li><li><a href="http://desenvolvimentoparaweb.com/css/gradiente-css-cross-browser-degrades-css-sem-usar-imagens/" title="Gradiente CSS cross browser: degradês em CSS sem usar imagens">Gradiente CSS cross browser: degradês em CSS sem usar imagens</a></li><li><a href="http://desenvolvimentoparaweb.com/wordpress/15-comandos-sql-wordpress/" title="15 fantásticos comandos SQL para WordPress">15 fantásticos comandos SQL para WordPress</a></li><li><a href="http://desenvolvimentoparaweb.com/usabilidade/ferramentas-criacao-wireframes/" title="Ferramentas para criação de wireframes">Ferramentas para criação de wireframes</a></li><li><a href="http://desenvolvimentoparaweb.com/css/rolagem-fundo-transparente-css/" title="Rolagem com fundo transparente com CSS">Rolagem com fundo transparente com CSS</a></li><li><a href="http://desenvolvimentoparaweb.com/design/7-ferramentas-para-web-designs-melhores/" title="7 ferramentas para web designs melhores">7 ferramentas para web designs melhores</a></li><li><a href="http://desenvolvimentoparaweb.com/wordpress/otimizacao-wordpress-performance-desempenho-blog-site/" title="Otimização WordPress: aumente a performance e desempenho de seu blog / site">Otimização WordPress: aumente a performance e desempenho de seu blog / site</a></li><li><a href="http://desenvolvimentoparaweb.com/miscelanea/jetpack-explorando-novas-maneiras-de-ampliar-e-personalizar-a-web/" title="Jetpack: explorando novas maneiras de ampliar e personalizar a web">Jetpack: explorando novas maneiras de ampliar e personalizar a web</a></li><li><a href="http://desenvolvimentoparaweb.com/jquery/como-criar-sumarios-dinamicamente-com-o-toc-table-of-contents-jquery-plugin-jquerytoc/" title="Como criar sumários dinamicamente com o TOC (Table of Contents) jQuery plugin">Como criar sumários dinamicamente com o TOC (Table of Contents) jQuery plugin</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://desenvolvimentoparaweb.com/jquery/nextgen-gallery-com-sexylightbox-sua-galeria-de-imagens-mais-sexy/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Como criar sum&#225;rios dinamicamente com o TOC (Table of Contents) jQuery plugin</title>
		<link>http://desenvolvimentoparaweb.com/jquery/como-criar-sumarios-dinamicamente-com-o-toc-table-of-contents-jquery-plugin-jquerytoc/</link>
		<comments>http://desenvolvimentoparaweb.com/jquery/como-criar-sumarios-dinamicamente-com-o-toc-table-of-contents-jquery-plugin-jquerytoc/#comments</comments>
		<pubDate>Wed, 15 Apr 2009 15:00:12 +0000</pubDate>
		<dc:creator>Tárcio Zemel</dc:creator>
				<category><![CDATA[jquery]]></category>
		<category><![CDATA[usabilidade]]></category>
		<category><![CDATA[apresentação]]></category>
		<category><![CDATA[dicas]]></category>
		<category><![CDATA[exemplos]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[programação]]></category>
		<guid isPermaLink="false">http://www.desenvolvimentoparaweb.com/?p=456</guid>
		<description><![CDATA[Aprenda como criar sum&aacute;rios din&acirc;micos para incrementar a usabilidade de seu site]]></description>
			<content:encoded><![CDATA[<p>Determinados tipos de <em>sites</em> (ou somente algumas p&aacute;ginas de <em>sites</em>) &agrave;s vezes precisam de um <strong>sum&aacute;rio</strong> para que o conte&uacute;do fique bem organizado e para oferecer uma vis&atilde;o geral sobre o conte&uacute;do. Um sum&aacute;rio em p&aacute;ginas de <em>web</em> tamb&eacute;m &eacute; muito &uacute;til em rela&ccedil;&atilde;o &aacute; <strong>usabilidade</strong>, dado que facilita a experi&ecirc;ncia do visitante ter um &#8220;apanhado geral&#8221; sobre o que vai encontrar.</p>
<p>Agora imagine como seria bom se houvesse uma maneira de criar sum&aacute;rios dinamicamente para as p&aacute;ginas de seu <em>site</em>! &#8220;Seria&#8221;, n&atilde;o; &eacute;! &Eacute; poss&iacute;vel <strong>criar sum&aacute;rios de forma din&acirc;mica</strong> atrav&eacute;s do <em>plugin</em> <strong>TOC (Table of Contents) jQuery plugin (jquery.toc)</strong> para jQuery!</p>
<h3>Sobre o TOC jQuery Plugin</h3>
<p>Na <a href="http://code.google.com/p/samaxesjs/wiki/TableOfContentsPlugin">p&aacute;gina oficial do TOC jQuery Plugin</a> &eacute; poss&iacute;vel encontrar informa&ccedil;&otilde;es importantes sobre o funcionamento do <em>plugin</em>, hist&oacute;rico de atualiza&ccedil;&otilde;es, <a href="http://samaxes-demos.appspot.com/samaxesjs/toc-jquery.html">exemplo de funcionamento</a>, dentre outros. Mas, para voc&ecirc; que est&aacute; lendo este artigo diretamente no <a href="http://desenvolvimentoparaweb.com/">desenvolvimento para web</a>, &eacute; poss&iacute;vel ver em todos os artigos o <em>plugin</em> em a&ccedil;&atilde;o, j&aacute; que implementei a cria&ccedil;&atilde;o din&acirc;mica de sum&aacute;rios oficialmente aqui no <em>blog</em>! Desabilite o <em>javascript</em> que voc&ecirc; vai ver, ou melhor, <strong>n&atilde;o vai ver o Sum&aacute;rio</strong>! ;-)</p>
<p>O funcionamento do <em>plugin</em> &eacute; em cima das <em>tags</em> de t&iacute;tulos e subt&iacute;tulos presentes nas p&aacute;ginas do site. Atrav&eacute;s da an&aacute;lise destes o <em>plugin</em>:</p>
<ul>
<li>Gera um Sum&aacute;rio (&#8220;Table of Contents&#8221;) dinamicamente (atrav&eacute;s de <em>tags</em> de lista);</li>
<li>Adiciona automaticamente numera&ccedil;&atilde;o ao Sum&aacute;rio e aos correspondentes t&iacute;tulos e subt&iacute;tulos da p&aacute;gina.</li>
</ul>
<p>E, seguindo a &#8220;filosofia&#8221; do jQuery, tudo &eacute; feito de forma bastante autom&aacute;tica e simplificada, bastando somente algumas pouqu&iacute;ssimas linhas de c&oacute;digo para colocar a extens&atilde;o em funcionamento!</p>
<h3>Funcionamento do jquery.toc</h3>
<p>A primeira coisa a se fazer, logicamente, &eacute; <a href="http://code.google.com/p/samaxesjs/downloads/list">baixar o query.toc</a>.  Lembrando que &eacute; sempre aconselh&aacute;vel baixar a &uacute;ltima vers&atilde;o dispon&iacute;vel &#8211; na data de publica&ccedil;&atilde;o deste artigo &eacute; a <strong>v1.0.2</strong>. Em rela&ccedil;&atilde;o a seu tamanho, tamb&eacute;m n&atilde;o h&aacute; nada com o que se preocupar: sua <strong>vers&atilde;o &#8220;normal&#8221; tem 5.3KB</strong> e a <strong>vers&atilde;o compactada tem 2.4KB</strong>. Depois disso, basta fazer a &#8220;chamada&#8221; do <em>script</em> (abaixo da chamada ao jQuery, claro) e come&ccedil;ar a codificar.</p>
<p>Lembrando que &eacute; conveniente fazer a chamada de todos <em>javascripts</em> e codificar na linguagem ao final do documento, preferencialmente <strong>antes de &#8220;&lt;/body&gt;&#8221;</strong>.</p>
<h3>Codificando</h3>
<p>Primeiro &eacute; importante escolher em qual lugar vai aparecer o sum&aacute;rio din&acirc;mico. &Eacute; bom dedicar uma DIV especialmente para isso para evitar erros/conflitos. Para facilitar, neste exemplo a DIV ter&aacute; o ID &#8220;toc&#8221;.</p>
<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;toc&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span> <span style="color: #808080; font-style: italic;">&lt;!-- sim, é uma DIV vazia... --&gt;</span></pre></td></tr></table></div>
<p>Uma das condi&ccedil;&otilde;es para o correto funcionamento do TOC jQuery Plugin &eacute; que cada t&iacute;tulo/subt&iacute;tulo que se queira incluir no sum&aacute;rio tenha o atributo <strong>id</strong> para ser referenciado e que ser&aacute; usado nos <em>links</em> de &acirc;ncora do Sum&aacute;rio criado. Falando claramente: <strong>todos seus t&iacute;tulos/subt&iacute;tulos t&ecirc;m que ter id</strong>.</p>
<p>Logicamente que criar manualmente um id para cada t&iacute;tulo/subt&iacute;tulo a fim de gerar dinamicamente o Sum&aacute;rio seria um trabalho extra e, diga-se de passagem, desnecess&aacute;rio, j&aacute; que &eacute; poss&iacute;vel fazer isso via javascript/jQuery. Vamos por partes.</p>
<p>O primeiro objetivo &eacute; &#8220;pegar&#8221; todos t&iacute;tulo/subt&iacute;tulos da p&aacute;gina (no trecho em que se queira incluir no Sum&aacute;rio din&acirc;mico) e acrescentar um id para cada um. O id pode ser qualquer nome que seja diferente para cada t&iacute;tulo/subt&iacute;tulo; afinal, trata-se de um id (mais informa&ccedil;&otilde;es a respeito, leia o artigo sobre <a href="http://www.desenvolvimentoparaweb.com/css/diferencas-entre-ids-e-classes/">diferen&ccedil;as entre IDs e Classes</a>):</p>
<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#content :header&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <span style="color: #006600; font-style: italic;">// http://tinyurl.com/celarh</span>
        <span style="color: #006600; font-style: italic;">// fazer qualquer coisa com cada título/subtítulo dentro de #content (nome-alvo fictício)</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span>jQuery<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>
<p>No caso da gera&ccedil;&atilde;o autom&aacute;tica de Sum&aacute;rio de conte&uacute;dos com o <em>plugin</em> TOC jQuery, nosso objetivo, como j&aacute; explicado, &eacute; dar um id para cada t&iacute;tulo/subt&iacute;tulo. Poder&iacute;amos criar um nome gen&eacute;rico e fazer um contador para marcar com n&uacute;meros (o resultaria seria &#8220;#id1&#8243;, &#8220;#id2&#8243;, &#8220;#id3&#8243;&#8230;); mas acho mais &#8220;elegante&#8221; manter o texto do t&iacute;tulo e, para enfeitar mais um pouco, inserir &#8220;_&#8221; no lugar de cada espa&ccedil;o (dado que nomes de IDs n&atilde;o podem conter <em>white spaces</em>).</p>
<p>Vamos gerar um ID para cada t&iacute;tulo/subt&iacute;tulo baseados nas seguintes premissas:</p>
<ul>
<li>Nome ser&aacute; o texto do t&iacute;tulo/subt&iacute;tulo;</li>
<li>Todos caracteres min&uacute;sculos;</li>
<li>Elimina&ccedil;&atilde;o de qualquer caractere que n&atilde;o seja letra ou n&uacute;mero (incluindo caracteres especiais);</li>
<li>Substitui&ccedil;&atilde;o de espa&ccedil;os por underscore (&#8220;_&#8221;).</li>
</ul>
<p>Ent&atilde;o, estamos assim, por enquanto:</p>
<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#content :header&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> id <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">text</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">toLowerCase</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/[^a-zA-Z 0-9]+/g</span><span style="color: #339933;">,</span><span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/\s/g</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'_'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// http://tinyurl.com/dl9z35</span>
        $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'id'</span><span style="color: #339933;">,</span> id<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//  http://tinyurl.com/68cxmw</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span>jQuery<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>
<p>Depois disso, j&aacute; temos todos os t&iacute;tulos e subt&iacute;tulos &#8220;alvo&#8221; com um ID. Agora &eacute; o momento de mandar o jquery.toc entrar em a&ccedil;&atilde;o:</p>
<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#content :header&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> id <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">text</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">toLowerCase</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/[^a-zA-Z 0-9]+/g</span><span style="color: #339933;">,</span><span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/\s/g</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'_'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'id'</span><span style="color: #339933;">,</span> id<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#toc'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">toc</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// #toc é o &quot;container&quot; do Sumário, definido anteriormente</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span>jQuery<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>
<p>O &#8220;grosso&#8221; da coisa &eacute; isso! Pode fazer seus testes e ver que o Sum&aacute;rio foi criado automaticamente e est&aacute; funcional, com todas as &acirc;ncoras apontando para seus respectivos t&iacute;tulos/subt&iacute;tulos.</p>
<h4>&#8220;Refinando&#8221; o Sum&aacute;rio din&acirc;mico</h4>
<p>Para obter um resultado mais &#8220;fino&#8221; ainda falta codificar alguns detalhes.</p>
<p>Por exemplo: vamos supor que, por algum motivo, voc&ecirc; queira que alguns t&iacute;tulos/subt&iacute;tulos n&atilde;o entrem na listagem do Sum&aacute;rio. Consultando a <a href="http://code.google.com/p/samaxesjs/wiki/TableOfContentsPlugin">documenta&ccedil;&atilde;o oficial do TOC jQuery Plugin</a> &eacute; poss&iacute;vel identificar que isso &eacute; poss&iacute;vel atrav&eacute;s da op&ccedil;&atilde;o <strong><em>exclude</em></strong>. Vamos supor que n&atilde;o queremos que os t&iacute;tulos prim&aacute;rios e o t&iacute;tulo secund&aacute;rio de id &#8220;apresentacao&#8221; entrem na listagem; ent&atilde;o o trecho ficaria:</p>
<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#toc'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">toc</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>exclude<span style="color: #339933;">:</span> <span style="color: #3366CC;">'h1, h2#apresentacao'</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>
<p>Em conversa com <a href="http://www.samaxes.com/about/">o desenvolvedor do <em>plugin</em></a>, fiquei sabendo que existe uma limita&ccedil;&atilde;o quanto ao n&uacute;mero de elementos poss&iacute;veis no <em>exclude</em>. Ent&atilde;o, caso tenha bastantes elementos que n&atilde;o gostaria que estivesse listados no Sum&aacute;rio, uma boa dica &eacute; criar uma classe qualquer (por exemplo &#8220;toc-exclude&#8221;) e marcar os elementos indesej&aacute;veis com ela. Ent&atilde;o, ficaria algo como:</p>
<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#toc'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">toc</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>exclude<span style="color: #339933;">:</span> <span style="color: #3366CC;">'h1, h2#apresentacao, .toc-exclude'</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>
<p>Aproveitando que estamos querendo fazer um trabalho bem-feito e que jQuery nos permite isso com muita facilidade, n&atilde;o nos custa indicar ao visitante que aquela listagem &eacute; um Sum&aacute;rio, inserindo, via jQuery, um subt&iacute;tulo antes da DIV &#8220;toc&#8221;:</p>
<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#toc'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">toc</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>exclude<span style="color: #339933;">:</span> <span style="color: #3366CC;">'h1, h2#apresentacao, .toc-exclude'</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">prepend</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'&lt;h3&gt;Sum&amp;aacute;rio&lt;/h3&gt;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// http://tinyurl.com/bjlr42</span></pre></td></tr></table></div>
<p>O <em>script</em> final de nosso exemplo &#8211; que serve de &#8220;base&#8221; para a implementa&ccedil;&atilde;o do jquery.toc em qualquer <em>site</em> &#8211; fica assim:</p>
<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#content :header&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> id <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">text</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">toLowerCase</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/[^a-zA-Z 0-9]+/g</span><span style="color: #339933;">,</span><span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/\s/g</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'_'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'id'</span><span style="color: #339933;">,</span> id<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#toc'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">toc</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>exclude<span style="color: #339933;">:</span> <span style="color: #3366CC;">'h1, h2#apresentacao, .toc-exclude'</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">prepend</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'&lt;h3&gt;Sum&amp;aacute;rio&lt;/h3&gt;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span>jQuery<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>
<h3>Conclus&otilde;es sobre o Table of Contents jQuery plugin</h3>
<p>Como foi demonstrado, <strong>criar um sum&aacute;rio autom&aacute;tico-din&acirc;mico com jQuery utilizando o <em>plugin</em> jquery.toc &eacute; algo bastante simples</strong>. E ele pode ser usado em qualquer tipo de <em>site</em>, inclusive os que utilizam CMSs, como os desenvolvidos em WordPress &#8211; vejam que <strong>este <em>blog</em> &eacute; WordPress</strong> e o recurso est&aacute; presente.</p>
<p>Como &#8220;desafio&#8221;, no site em que for implementar o jquery.toc fa&ccedil;a o seguinte: gere a DIV <strong>#toc</strong> atrav&eacute;s de jQuery ao inv&eacute;s de deix&aacute;-la na marca&ccedil;&atilde;o (X)HTML. Coloque o <em>link</em> para o <em>site</em> nos coment&aacute;rios!  ;-)</p>
<h3  class="related_post_title">Artigos Relacionados</h3><ul class="related_post"><li><a href="http://desenvolvimentoparaweb.com/jquery/melhorando-interacao-formularios-busca/" title="Melhorando a interação em formulários de busca">Melhorando a interação em formulários de busca</a></li><li><a href="http://desenvolvimentoparaweb.com/xhtml/textarea-dicas-truques-textarea/" title="Textarea: dicas e truques que você sempre quis saber">Textarea: dicas e truques que você sempre quis saber</a></li><li><a href="http://desenvolvimentoparaweb.com/wordpress/15-comandos-sql-wordpress/" title="15 fantásticos comandos SQL para WordPress">15 fantásticos comandos SQL para WordPress</a></li><li><a href="http://desenvolvimentoparaweb.com/miscelanea/jetpack-explorando-novas-maneiras-de-ampliar-e-personalizar-a-web/" title="Jetpack: explorando novas maneiras de ampliar e personalizar a web">Jetpack: explorando novas maneiras de ampliar e personalizar a web</a></li><li><a href="http://desenvolvimentoparaweb.com/miscelanea/sobre-parcerias-de-trabalhos-de-desenvolvimento-web/" title="Sobre parcerias de trabalhos em desenvolvimento web">Sobre parcerias de trabalhos em desenvolvimento web</a></li><li><a href="http://desenvolvimentoparaweb.com/usabilidade/8-caracteristicas-de-user-interfaces-ui-de-sucesso/" title="8 características de User Interfaces (UI) de sucesso">8 características de User Interfaces (UI) de sucesso</a></li><li><a href="http://desenvolvimentoparaweb.com/wordpress/preciosas-dicas-de-seguranca-e-otimizacao-para-wordpress/" title="Preciosas dicas de segurança e otimização para WordPress">Preciosas dicas de segurança e otimização para WordPress</a></li><li><a href="http://desenvolvimentoparaweb.com/jquery/jquery-mais-50-dos-melhores-tutoriais-apostilas-e-exemplos/" title="jQuery: mais 50 dos melhores tutoriais, apostilas e exemplos">jQuery: mais 50 dos melhores tutoriais, apostilas e exemplos</a></li><li><a href="http://desenvolvimentoparaweb.com/seo/erros-comuns-desenvolvimento-web-campanhas-seo/" title="Erros comuns em desenvolvimento web para campanhas de SEO">Erros comuns em desenvolvimento web para campanhas de SEO</a></li><li><a href="http://desenvolvimentoparaweb.com/php/urls-amigaveis-slug-a-wordpress/" title="URLs amigáveis (slug) à WordPress">URLs amigáveis (slug) à WordPress</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://desenvolvimentoparaweb.com/jquery/como-criar-sumarios-dinamicamente-com-o-toc-table-of-contents-jquery-plugin-jquerytoc/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>jQuery: mais 50 dos melhores tutoriais, apostilas e exemplos</title>
		<link>http://desenvolvimentoparaweb.com/jquery/jquery-mais-50-dos-melhores-tutoriais-apostilas-e-exemplos/</link>
		<comments>http://desenvolvimentoparaweb.com/jquery/jquery-mais-50-dos-melhores-tutoriais-apostilas-e-exemplos/#comments</comments>
		<pubDate>Fri, 25 Apr 2008 13:03:04 +0000</pubDate>
		<dc:creator>Tárcio Zemel</dc:creator>
				<category><![CDATA[indicações]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[apostilas]]></category>
		<category><![CDATA[exemplos]]></category>
		<category><![CDATA[extensões]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[progamação]]></category>
		<category><![CDATA[tutoriais]]></category>
		<guid isPermaLink="false">http://www.desenvolvimentoparaweb.com/?p=130</guid>
		<description><![CDATA[Conhe&ccedil;a a compila&ccedil;&atilde;o com mais de 50 dos melhores tutoriais, apostilas, explica&ccedil;&otilde;es e exemplos de jQuery dispon&iacute;vel na internet!]]></description>
			<content:encoded><![CDATA[<p>O pessoal do <a title="Visitar o Noupe." rel="home colleague" href="http://www.noupe.com/"><span lang="en">Noupe</span></a> gosta mesmo de <a title="Visitar a p&aacute;gina oficial do jQuery." rel="home colleague" href="http://jquery.com/"><span lang="en">jQuery</span></a>! Al&eacute;m das <a title="Visitar a categoria sobre o jQuery do Noupe." rel="colleague" href="http://www.noupe.com/category/jquery">diversas compila&ccedil;&otilde;es de <span lang="en"><em>plugins</em></span> e exemplos do <span lang="en"><em>framework</em></span> que j&aacute; fizeram</a> (alguns podem ser vistos na <a title="Visitar a categoria sobre jQuery." href="http://www.desenvolvimentoparaweb.com/category/jquery/">categoria <span lang="en">jQuery</span></a>, <a href="http://www.desenvolvimentoparaweb.com/">aqui do <span lang="en"><em>blog</em></span></a>), agora eles apareceram com uma outra listagem com mais <strong>50 exemplos de aplica&ccedil;&atilde;o de <span lang="en">jQuery</span></strong>!</p>
<p>S&atilde;o indica&ccedil;&otilde;es de tutoriais, exemplos, apostilas e macetes de <span lang="en">jQuery</span>, tanto de tutoriais individuais, quanto <span lang="en"><em>web sites</em></span> inteiros dedicados ao <span lang="en"><em>framework</em></span>! Gostei especialmente dos <span lang="en"><em>links</em></span> sobre <strong>uso de AJAX com <span lang="en">jQuery</span></strong>!</p>
<p>Enfim, mais uma bel&iacute;ssima compila&ccedil;&atilde;o do Noupe sobre este <span lang="en"><em>framework javascript</em></span> que, com certeza, &eacute; o mais leve, f&aacute;cil e eficiente dispon&iacute;vel hoje em dia!</p>
<div class="link"><a rel="colleague" href="http://www.noupe.com/tutorial/51-best-of-jquery-tutorials-and-examples.html">Mais 50 dos melhores tutoriais, apostilas e exemplos de <span lang="en">jQuery</span></a></div>
<h3  class="related_post_title">Artigos Relacionados</h3><ul class="related_post"><li><a href="http://desenvolvimentoparaweb.com/jquery/nextgen-gallery-com-sexylightbox-sua-galeria-de-imagens-mais-sexy/" title="NextGEN Gallery com SexyLightBox: sua galeria de imagens mais sexy">NextGEN Gallery com SexyLightBox: sua galeria de imagens mais sexy</a></li><li><a href="http://desenvolvimentoparaweb.com/jquery/como-criar-sumarios-dinamicamente-com-o-toc-table-of-contents-jquery-plugin-jquerytoc/" title="Como criar sumários dinamicamente com o TOC (Table of Contents) jQuery plugin">Como criar sumários dinamicamente com o TOC (Table of Contents) jQuery plugin</a></li><li><a href="http://desenvolvimentoparaweb.com/miscelanea/30-extensoes-para-firefox-que-vao-mudar-sua-vida-na-web-para-melhor/" title="30 extensões para Firefox que vão mudar sua vida na web (para melhor)">30 extensões para Firefox que vão mudar sua vida na web (para melhor)</a></li><li><a href="http://desenvolvimentoparaweb.com/wordpress/preciosas-dicas-de-seguranca-e-otimizacao-para-wordpress/" title="Preciosas dicas de segurança e otimização para WordPress">Preciosas dicas de segurança e otimização para WordPress</a></li><li><a href="http://desenvolvimentoparaweb.com/indicacoes/mais-de-450-extensoes-para-wordpress/" title="Mais de 450 extensões para WordPress">Mais de 450 extensões para WordPress</a></li><li><a href="http://desenvolvimentoparaweb.com/wordpress/wassup-plugin-wordpress-estatisticas-acesso-em-tempo-real/" title="WassUp: plugin WordPress para ver estatísticas de acesso (em tempo real)">WassUp: plugin WordPress para ver estatísticas de acesso (em tempo real)</a></li><li><a href="http://desenvolvimentoparaweb.com/miscelanea/como-tirar-screenshot-de-um-web-site-inteiro-e-obter-uma-imagem-completa/" title="Como tirar screenshot de um web site inteiro e obter uma imagem completa">Como tirar screenshot de um web site inteiro e obter uma imagem completa</a></li><li><a href="http://desenvolvimentoparaweb.com/indicacoes/25-extensoes-para-o-firefox-para-aumentar-a-produtividade-no-dia-a-dia-na-web/" title="25 extensões para o Firefox para aumentar a produtividade no dia-a-dia na web">25 extensões para o Firefox para aumentar a produtividade no dia-a-dia na web</a></li><li><a href="http://desenvolvimentoparaweb.com/jquery/melhorando-interacao-formularios-busca/" title="Melhorando a interação em formulários de busca">Melhorando a interação em formulários de busca</a></li><li><a href="http://desenvolvimentoparaweb.com/xhtml/textarea-dicas-truques-textarea/" title="Textarea: dicas e truques que você sempre quis saber">Textarea: dicas e truques que você sempre quis saber</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://desenvolvimentoparaweb.com/jquery/jquery-mais-50-dos-melhores-tutoriais-apostilas-e-exemplos/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>A melhor lista de plugins para jQuery do mundo!</title>
		<link>http://desenvolvimentoparaweb.com/jquery/a-melhor-lista-de-plugins-para-jquery-do-mundo/</link>
		<comments>http://desenvolvimentoparaweb.com/jquery/a-melhor-lista-de-plugins-para-jquery-do-mundo/#comments</comments>
		<pubDate>Tue, 22 Jan 2008 20:03:01 +0000</pubDate>
		<dc:creator>Tárcio Zemel</dc:creator>
				<category><![CDATA[indicações]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[plugin]]></category>
		<guid isPermaLink="false">http://www.desenvolvimentoparaweb.com/jquery/a-melhor-lista-de-plugins-para-jquery-do-mundo/</guid>
		<description><![CDATA[Diversas listas com excelentes plugins para jQuery! Certamente uma das melhores compila&ccedil;&otilde;es de plugin de jQuery da web!]]></description>
			<content:encoded><![CDATA[<p>O <a title="Visitar o Noupe." rel="home colleague" href="http://www.noupe.com/"><span lang="en">Noupe</span></a> disponibilizou uma <strong>excelente lista com 50 exemplos de <span lang="en">jQuery</span></strong>! S&atilde;o v&aacute;rios autores que desenvolveram <span lang="en"><em>plugins</em></span> / t&eacute;cnicas / exemplos de como se fazer um bom uso do <span lang="en"><em>framework</em></span>!</p>
<p>Tudo est&aacute; bem separadinho por categorias:</p>
<p><strong> </strong></p>
<ul>
<li><strong>Pain&eacute;is deslizantes;</strong></li>
<li><strong>Menus;</strong></li>
<li><strong>Abas;</strong></li>
<li><strong>&#8220;Acordeons&#8221;;</strong></li>
<li><span lang="en"><strong>Shows</strong></span><strong> de <span lang="en">slides</span>;</strong></li>
<li><strong>Efeitos de transi&ccedil;&atilde;o;</strong></li>
<li><strong>Carros&eacute;is;</strong></li>
<li><strong>Seletores de cores;</strong></li>
<li><span lang="en"><strong>Lightboxes</strong></span><strong>;</strong></li>
<li><strong>Valida&ccedil;&otilde;es de formul&aacute;rios;</strong></li>
<li><strong>Elementos de formul&aacute;rios;</strong></li>
<li><span lang="en"><strong>Tooltips</strong></span><strong>;</strong></li>
<li><strong>Tabelas;</strong></li>
<li><strong>Muitos, muitos outros&#8230;</strong></li>
</ul>
<p>Ufa! S&atilde;o tantas as categorias e t&atilde;o bons os exemplos que, provavelmente, esta &eacute; a <strong>melhor sele&ccedil;&atilde;o de <span lang="en"><em>plugins</em></span> para <span lang="en">jQuery</span> que existe atualmente</strong>!</p>
<p>Pessoal, &eacute; s&eacute;rio: guardem esta lista com voc&ecirc;s (seja favoritando, adicionando no <a title="Visitar o del.icio.us." rel="home" href="http://del.icio.us/"><span lang="en">del.icio.us</span></a>, navegador, ou o que quer que seja), porque, certamente, aqueles que desenvolvem com <span lang="en">jQuery</span> um dia precisar&atilde;o de algo que est&aacute; nesta lista!</p>
<p>Abra&ccedil;os e aproveitemos!</p>
<p><strong>&lt;update&gt;</strong><br />
Saiu uma lista com mais <a href="http://www.noupe.com/ajax/37-more-shocking-jquery-plugins.html">37 plugins para jQuery</a>!<br />
<strong>&lt;/update&gt;</strong></p>
<div class="link"><a href="http://www.noupe.com/ajax/50-amazing-jquery-examples-part1.html">50 fant&aacute;sticos exemplos de <span lang="en">jQuery</span></a></div>
<h3  class="related_post_title">Artigos Relacionados</h3><ul class="related_post"><li><a href="http://desenvolvimentoparaweb.com/jquery/jquery-apresentacao-introducao/" title="jQuery: apresentação">jQuery: apresentação</a></li><li><a href="http://desenvolvimentoparaweb.com/jquery/melhorando-interacao-formularios-busca/" title="Melhorando a interação em formulários de busca">Melhorando a interação em formulários de busca</a></li><li><a href="http://desenvolvimentoparaweb.com/javascript/melhores-editores-wysiwyg-para-seu-projeto/" title="Melhores editores WYSIWYG para seu projeto">Melhores editores WYSIWYG para seu projeto</a></li><li><a href="http://desenvolvimentoparaweb.com/jquery/8-dicas-fazer-codigos-melhores-jquery/" title="8 dicas para fazer códigos melhores com jQuery">8 dicas para fazer códigos melhores com jQuery</a></li><li><a href="http://desenvolvimentoparaweb.com/jquery/jquery-mais-50-dos-melhores-tutoriais-apostilas-e-exemplos/" title="jQuery: mais 50 dos melhores tutoriais, apostilas e exemplos">jQuery: mais 50 dos melhores tutoriais, apostilas e exemplos</a></li><li><a href="http://desenvolvimentoparaweb.com/indicacoes/ie7-js-um-javascript-para-fazer-o-internet-explorer-renderizar-melhor/" title="ie7-js: um javascript para fazer o Internet Explorer renderizar melhor">ie7-js: um javascript para fazer o Internet Explorer renderizar melhor</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://desenvolvimentoparaweb.com/jquery/a-melhor-lista-de-plugins-para-jquery-do-mundo/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>jQuery: apresenta&#231;&#227;o</title>
		<link>http://desenvolvimentoparaweb.com/jquery/jquery-apresentacao-introducao/</link>
		<comments>http://desenvolvimentoparaweb.com/jquery/jquery-apresentacao-introducao/#comments</comments>
		<pubDate>Fri, 14 Sep 2007 01:30:17 +0000</pubDate>
		<dc:creator>Tárcio Zemel</dc:creator>
				<category><![CDATA[jquery]]></category>
		<category><![CDATA[apresentação]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[introdução]]></category>
		<category><![CDATA[javascript]]></category>
		<guid isPermaLink="false">http://www.desenvolvimentoparaweb.com/2007/09/13/jquery-apresentacao/</guid>
		<description><![CDATA[jQuery &eacute; o melhor framework javascript da atualidade; conhe&ccedil;a suas vantagens de uso, algumas de suas caracter&iacute;sticas e refer&ecirc;ncias de estudo e surpreenda seus visitantes atrav&eacute;s de excelentes recursos de interatividade!]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter size-full wp-image-513" src="http://www.desenvolvimentoparaweb.com/wp-content/uploads/2007/09/jquery-logo-jquery-apresentacao-introducao.gif" alt="jQuery logo: jQuery apresenta&ccedil;&atilde;o introdu&ccedil;&atilde;o" width="259" height="65" /></p>
<p><strong>jQuery &eacute; o melhor framework javascript </strong>da atualidade (oficialmente &eacute; considerado uma <strong>biblioteca javascript</strong>), isso todos que j&aacute; mexem com <a href="http://desenvolvimentoparaweb.com/">desenvolvimento web</a> j&aacute; sabem. J&aacute; quem est&aacute; iniciando no mundo do desenvolvimento para <em>web</em> ainda n&atilde;o sabe&#8230; E justamente para explicar um pouco mais sobre o jQuery &eacute; que este artigo foi escrito, visando auxiliar aos que est&atilde;o iniciando a jornada <em>javascript </em>a encontrar um caminho seguro para come&ccedil;ar.</p>
<h3>Introdu&ccedil;&atilde;o</h3>
<p>Geralmente desenvolvedores <em>web</em> gostam de colecionar bibliotecas e <span lang="en"><em>scripts</em></span> prontos das linguagens de programa&ccedil;&atilde;o que utilizam no dia-a-dia. Ter &agrave; disposi&ccedil;&atilde;o in&uacute;meros arquivos de terceiros, desde exemplos e classes, passando por modelos e tudo o mais que possa servir de alguma maneira &#8211; e/ou simplesmente satisfazer a curiosidade acerca determinado modo ou t&eacute;cnica para programar &#8211; &eacute; o <em>modus operandi</em> de quem programa para <em>web</em>.</p>
<p>Obviamente, todos queremos ter o melhor! E, em se tratando de progra&ccedil;&atilde;o, n&atilde;o poderia ser diferente. Dado que o melhor <em>framework javascript</em> atual &eacute; <strong>jQuery</strong>, ent&atilde;o n&atilde;o h&aacute; nada mais natural do que conhecer e saber usar esta poderos&iacute;ssima ferramenta para desenvolver <em>sites</em>, <em>blogs</em>, produtos virtuais, sistemas <em>online</em> e o que mais voc&ecirc; precisar que tenha <em>javascript</em>!</p>
<h3>O que &eacute; um <span lang="en"><em>framework</em></span>?</h3>
<p>jQuery &eacute; a maneira mais f&aacute;cil, simples, elegante e sofisticada de codificar <span lang="en"><em>javascript</em></span>; &eacute;, nada mais, nada menos, que, segundo a opini&atilde;o de profissionais do ramo e publica&ccedil;&otilde;es especializadas, um dos melhores <span lang="en"><em>frameworks</em></span> j&aacute; desenvolvidos!  Para ficar mais claro, <span lang="en"><em>framework</em></span>, segundo <a title="defini&ccedil;&atilde;o de Framework, da Wikip&eacute;dia" href="http://pt.wikipedia.org/wiki/Framework">defini&ccedil;&atilde;o encontrada na Wikip&eacute;dia</a>, &eacute;:</p>
<blockquote><p>No desenvolvimento do <span lang="en"><em>software</em></span>, um <span lang="en"><em>framework</em></span> ou arcabou&ccedil;o &eacute; uma estrutura de suporte definida em que um outro projeto de <span lang="en"><em>software</em></span> pode ser organizado e desenvolvido. Um <span lang="en"><em>framework</em></span> pode incluir programas de suporte, bibliotecas de c&oacute;digo, linguagens de <span lang="en"><em>script</em></span> e outros <span lang="en"><em>softwares</em></span> para ajudar a desenvolver e juntar diferentes componentes de um projeto de <span lang="en"><em>software</em></span>.</p>
<p><span lang="en"><em>Frameworks</em></span> s&atilde;o projetados com a inten&ccedil;&atilde;o de facilitar o desenvolvimento de <span lang="en"><em>software</em></span>, habilitando <span lang="en"><em>designers</em></span> e programadores a gastarem mais tempo determinando as exig&ecirc;ncias do <span lang="en"><em>software</em></span> do que com detalhes tediosos de baixo n&iacute;vel do sistema. (<em>sic</em>)</p></blockquote>
<h3>Para que serve <span lang="en">jQuery</span>?</h3>
<p>Segundo consta no <span lang="en"><em>web site</em></span> oficial, “<span lang="en"><em>jQuery is designed to change the way that you write JavaScript</em></span>”, ou seja,  <span lang="en">jQuery</span> &eacute; projetado para mudar sua maneira de escrever <span lang="en"><em>javascript</em></span> (<em>tradu&ccedil;&atilde;o livre</em>). Por experi&ecirc;ncia pr&oacute;pria, posso afirmar que o objetivo da equipe de desenvolvimento foi atingido com sucesso!</p>
<p><span lang="en">jQuery</span> &eacute; disponibilizado das diferentes maneiras:</p>
<ul>
<li><strong>Desenvolvimento.</strong> Apresenta todos seus c&oacute;digos completos, identados e de f&aacute;cil entendimento (isso &eacute; relativo). Ideal para quem queira estudar e compreender como as coisas funcionam, essa &#8220;vers&atilde;o sem cortes&#8221; &eacute; ideal para estudo/aprendizado a fundo da biblioteca.</li>
<li><strong>Produ&ccedil;&atilde;o</strong>. Esta &eacute; a vers&atilde;o para quem se preocupa somente em utilizar o jQuery e usufruir de todo o seu poder atrav&eacute;s de um arquivo compactado, diminuto e ideal para aqueles que querem usar o <span lang="en"><em>framework</em></span> rapidamente, evitando transfer&ecirc;ncias desnecess&aacute;rias e tempos de carregamento excessivos.</li>
<li><strong>Google API/CDN.</strong> Atrav&eacute;s da API AJAX de bibliotecas do Google &eacute; poss&iacute;vel, dentre outros frameworks e bibliotecas, incorporar o jQuery a suas p&aacute;ginas web. <a href="http://code.google.com/intl/pt-BR/apis/ajaxlibs/documentation/index.html#jquery">Leia mais sobre como usar jQuery a partir da API AJAX do Google</a>.</li>
</ul>
<p>Quando se usa <span lang="en">jQuery</span>, realmente a maneira de se escrever <span lang="en"><em>javascript</em></span> muda! &Eacute; o fim das enormes linhas que servem somente para identificar um elemento; o fim dos la&ccedil;os de repeti&ccedil;&atilde;o que somente identificam quantos elementos de determinada categoria est&atilde;o presentes no documento; o fim de in&uacute;meros &#8220;Ctrl + C, Ctrl + V&#8221;; enfim, &eacute; o t&eacute;rmino do trabalho pesado e perda de tempo na codifica&ccedil;&atilde;o <span lang="en"><em>javascript</em></span> e o in&iacute;cio da <strong>codifica&ccedil;&atilde;o simples, elegante e eficazmente robusta e de f&aacute;cil entendimento</strong>.</p>
<p>Com pouqu&iacute;ssimas linhas de c&oacute;digo, &eacute; poss&iacute;vel mexer &agrave; vontade com o <a title="defini&ccedil;&atilde;o de DOM, da Wikip&eacute;dia" href="http://pt.wikipedia.org/wiki/Modelo_de_Objeto_de_Documentos">DOM</a> (identifica&ccedil;&atilde;o, edi&ccedil;&atilde;o, inser&ccedil;&atilde;o, dele&ccedil;&atilde;o, etc), manipular eventos <span lang="en"><em>javascript</em></span>, alterar regras CSS, aplicar efeitos visuais (<span lang="en"><em>fade in</em> / <em>fade out</em>, <em>drag and drop</em>, <em>slides</em></span>, movimentos, etc) e muito mais coisas interessantes, &uacute;teis e <em><a title="defini&ccedil;&atilde;o de cross browser, da Wikip&eacute;dia" href="http://pt.wikipedia.org/wiki/Cross-browser">cross browser</a></em>. E quando digo “pouqu&iacute;ssimas linhas de c&oacute;digo”, refiro-me, por exemplo, a 3 ou 4 linhas  para requisi&ccedil;&otilde;es AJAX!<span lang="en"> </span></p>
<p>Quer mais? <span lang="en">jQuery</span> &eacute; projetado para aceitar <a title="visualizar lista oficial de plugins do jQuery" href="http://docs.jquery.com/Plugins">extens&otilde;es de terceiros</a>, quer dizer, qualquer um com certa habilidade em programa&ccedil;&atilde;o pode criar funcionalidades <em>extra</em> para a biblioteca<span lang="en"><em></em></span>, extendendo suas potencialidades nativas e/ou aproveitando seu poder de funcionamento.</p>
<div class="recapitulacao">
<h3>Recapitula&ccedil;&atilde;o jQuery</h3>
<p><span lang="en">jQuery</span> &eacute; uma biblioteca (ou <span lang="en"><em>framework</em></span>) &#8220;projetado para mudar sua maneira de escrever <span lang="en"><em>javascript</em></span>&#8220;; atualmente &eacute; a melhor biblioteca <em>javascript</em> dispon&iacute;vel e est&aacute; sempre nas listas das mais usadas no mundo. Algumas de suas caracter&iacute;sticas s&atilde;o:</p>
<ul>
<li><span lang="en"><em>Cross browser;</em></span></li>
<li>Controle total sobre o DOM;</li>
<li>Manipula&ccedil;&atilde;o de eventos <span lang="en"><em>javascript;</em></span></li>
<li>Manipula&ccedil;&atilde;o de regras CSS;</li>
<li>Aplica&ccedil;&atilde;o de efeitos visuais;</li>
<li>Uso de AJAX;</li>
<li>Muito, muito mais!</li>
</ul>
</div>
<div class="referenciasInternacionais">
<h3>Refer&ecirc;ncias Internacionais</h3>
<p><a title="visitar o web site oficial do jQuery" href="http://jquery.com/">jquery.com</a><br />
Este &eacute; o <span lang="en"><em>web site</em></span> oficial da biblioteca (ou <span lang="en"><em>framework</em></span>). H&aacute; tamb&eacute;m o <span lang="en"><a title="visitar o blog oficial do jQuery" href="http://jquery.com/blog/"><em>blog</em> oficial</a></span>.</p>
<p><a title="visitar 15daysofjquery.com" href="http://15daysofjquery.com/">15daysofjquery.com</a><br />
Este &eacute; o <span lang="en"><em>web site</em></span> de <span lang="en"><a title="visitar o web site de Jack Born" href="http://www.jackborn.com/">Jack Born</a></span>, que cont&eacute;m tutoriais, exemplos e refer&ecirc;ncias sobre o <span lang="en">jQuery</span>.</p>
<p><a title="visitar visualjquery.com" href="http://visualjquery.com/">visualjquery.com</a><br />
<a href="http://remysharp.com/">Remy Sharp</a> e <span lang="en"><a title="visitar o web site de Yehuda Katz" href="http://yehudakatz.com/">Yehuda Katz</a></span> fizeram um &oacute;timo guia de refer&ecirc;ncia din&acirc;mico sobre as funcionalidades do <span lang="en">jQuery</span> (usando o pr&oacute;prio <span lang="en"><em>framework</em></span> para isso, claro). Nesta p&aacute;gina &eacute; poss&iacute;vel visualizar as caracter&iacute;sticas de cada fun&ccedil;&atilde;o de forma detalhada. Excelente guia de refer&ecirc;ncia!</p>
<p><a title="visitar learningjquery.com" href="http://www.learningjquery.com/">learningjquery.com</a><br />
Esse &eacute; o <span lang="en"><em>blog</em></span> de <span lang="en">Brandon, Dan, JonBob, Karl</span> e <span lang="en">Mike</span>, que postam dicas, t&eacute;cnicas tutoriais e macetes sobre o <span lang="en">jQuery</span> de forma sistematicamente organizada.</p>
<h3>Refer&ecirc;ncias Nacionais</h3>
<p><a href="http://i18n.2kminterativa.com.br/jquery/jquery-getting-started-pt_br.html">Tutorial &#8211; Por onde come&ccedil;ar com o jQuery</a><br />
Este tutorial aborda de maneira muito eficiente e competente os primeiros passos com jQuery, mostrando, num passo-a-passo progressivo e exemplos bem did&aacute;ticos como se come&ccedil;ar com jQuery.</p>
<p><a href="http://simplesideias.com.br/usando-jquery-na-pratica/">Usando jQuery na pr&aacute;tica</a><br />
Outro tutorial interessant&iacute;ssimo para se come&ccedil;ar; aborda os conceitos b&aacute;sicos e mostra, de forma progressiva e &#8220;suave&#8221;, o in&iacute;cio do caminho do jQuery.</p>
<div class="complementos">
<p><a title="visualizar o tutorial DHTML Crossbrowser F&aacute;cil" href="http://elcio.com.br/crossbrowser/">DHTML <span lang="en">Crossbrowser</span> F&aacute;cil</a><br />
Esse &eacute; um artigo bem conhecido no meio. Ele ensina alguns princ&iacute;pios b&aacute;sicos para se entender <a title="defini&ccedil;&atilde;o de " href="http://pt.wikipedia.org/wiki/DHTML">DHTML</a> (para isso, diversas tecnologias <span lang="en"><em>web</em></span> e t&eacute;cnicas s&atilde;o abordados). &Eacute; uma &oacute;tima leitura complementar.</div>
</div>
<h3  class="related_post_title">Artigos Relacionados</h3><ul class="related_post"><li><a href="http://desenvolvimentoparaweb.com/jquery/a-melhor-lista-de-plugins-para-jquery-do-mundo/" title="A melhor lista de plugins para jQuery do mundo!">A melhor lista de plugins para jQuery do mundo!</a></li><li><a href="http://desenvolvimentoparaweb.com/jquery/melhorando-interacao-formularios-busca/" title="Melhorando a interação em formulários de busca">Melhorando a interação em formulários de busca</a></li><li><a href="http://desenvolvimentoparaweb.com/javascript/melhores-editores-wysiwyg-para-seu-projeto/" title="Melhores editores WYSIWYG para seu projeto">Melhores editores WYSIWYG para seu projeto</a></li><li><a href="http://desenvolvimentoparaweb.com/usabilidade/breadcrumbs-guia-completo-exemplos-melhores-praticas/" title="Breadcrumbs: guia completo com exemplos e melhores práticas">Breadcrumbs: guia completo com exemplos e melhores práticas</a></li><li><a href="http://desenvolvimentoparaweb.com/jquery/8-dicas-fazer-codigos-melhores-jquery/" title="8 dicas para fazer códigos melhores com jQuery">8 dicas para fazer códigos melhores com jQuery</a></li><li><a href="http://desenvolvimentoparaweb.com/jquery/como-criar-sumarios-dinamicamente-com-o-toc-table-of-contents-jquery-plugin-jquerytoc/" title="Como criar sumários dinamicamente com o TOC (Table of Contents) jQuery plugin">Como criar sumários dinamicamente com o TOC (Table of Contents) jQuery plugin</a></li><li><a href="http://desenvolvimentoparaweb.com/jquery/jquery-mais-50-dos-melhores-tutoriais-apostilas-e-exemplos/" title="jQuery: mais 50 dos melhores tutoriais, apostilas e exemplos">jQuery: mais 50 dos melhores tutoriais, apostilas e exemplos</a></li><li><a href="http://desenvolvimentoparaweb.com/indicacoes/ie7-js-um-javascript-para-fazer-o-internet-explorer-renderizar-melhor/" title="ie7-js: um javascript para fazer o Internet Explorer renderizar melhor">ie7-js: um javascript para fazer o Internet Explorer renderizar melhor</a></li><li><a href="http://desenvolvimentoparaweb.com/acessibilidade/acessibilidade-web-sete-mitos-e-um-equivoco/" title="&#8220;Acessibilidade Web: Sete Mitos e Um Equívoco&#8221;">&#8220;Acessibilidade Web: Sete Mitos e Um Equívoco&#8221;</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://desenvolvimentoparaweb.com/jquery/jquery-apresentacao-introducao/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
