<?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>JavaScript: Singuska &#187; plugin</title>
	<atom:link href="http://javascript.singuska.com/tag/plugin/feed/" rel="self" type="application/rss+xml" />
	<link>http://javascript.singuska.com</link>
	<description>Fragmentos de código e gambiarras (0.2)</description>
	<lastBuildDate>Mon, 03 Oct 2011 19:45:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
		<item>
		<title>Click interrompido</title>
		<link>http://javascript.singuska.com/2011/06/22/click-interrompido/</link>
		<comments>http://javascript.singuska.com/2011/06/22/click-interrompido/#comments</comments>
		<pubDate>Wed, 22 Jun 2011 04:51:48 +0000</pubDate>
		<dc:creator>Flávio</dc:creator>
				<category><![CDATA[Fragmento]]></category>
		<category><![CDATA[Gambiarra]]></category>
		<category><![CDATA[funções]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://javascript.singuska.com/?p=605</guid>
		<description><![CDATA[Um padrão recorrente na programação em jQuery é executar uma função quando um link é clicado e, concomitantemente, evitar o que navegador carrege uma nova página ao ser clicado. É possível criar uma função que sirva de atalho para esta tarefa repetitiva: 1 2 3 4 5 6 $.fn.extend&#40;&#123;clickPrevented: function&#40;fn&#41; &#123; $&#40;this&#41;.click&#40;function&#40;e&#41; &#123; e.preventDefault&#40;&#41;; fn&#40;e&#41;; [...]]]></description>
			<content:encoded><![CDATA[<p>Um padrão recorrente na programação em jQuery é executar uma função quando um link é clicado e, concomitantemente, evitar o que navegador carrege uma nova página ao ser clicado. É possível criar uma função que sirva de atalho para esta tarefa repetitiva:</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: #6591f7;">fn</span>.<span style="color: #6591f7;">extend</span><span style="color: #ffffff;">&#40;</span><span style="color: #ffffff;">&#123;</span>clickPrevented<span style="color: #ffffff;">:</span> <span style="color: #fbde2d; font-weight: bold;">function</span><span style="color: #ffffff;">&#40;</span>fn<span style="color: #ffffff;">&#41;</span> <span style="color: #ffffff;">&#123;</span>
	$<span style="color: #ffffff;">&#40;</span><span style="color: #fbde2d; font-weight: bold;">this</span><span style="color: #ffffff;">&#41;</span>.<span style="color: #6591f7;">click</span><span style="color: #ffffff;">&#40;</span><span style="color: #fbde2d; font-weight: bold;">function</span><span style="color: #ffffff;">&#40;</span>e<span style="color: #ffffff;">&#41;</span> <span style="color: #ffffff;">&#123;</span>
		e.<span style="color: #6591f7;">preventDefault</span><span style="color: #ffffff;">&#40;</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span>
		fn<span style="color: #ffffff;">&#40;</span>e<span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span>
	<span style="color: #ffffff;">&#125;</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span>
<span style="color: #ffffff;">&#125;</span><span style="color: #ffffff;">&#125;</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span></pre></td></tr></table></div>

<p>A utilização aconteceria mais ou menos assim:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #ffffff;">&#40;</span><span style="color: #61ce3c;">'#apenas_um_cara'</span><span style="color: #ffffff;">&#41;</span>.<span style="color: #6591f7;">clickPrevented</span><span style="color: #ffffff;">&#40;</span><span style="color: #fbde2d; font-weight: bold;">function</span><span style="color: #ffffff;">&#40;</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">&#123;</span>
        <span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span><span style="color: #61ce3c;">'Você vai continuar nesta página após o alert.'</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span>
<span style="color: #ffffff;">&#125;</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://javascript.singuska.com/2011/06/22/click-interrompido/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>hhSelectMaker: um plugin para criar selects a partir de uma fonte de dados</title>
		<link>http://javascript.singuska.com/2010/03/12/hhselectmaker-um-plugin-para-criar-selects-a-partir-de-uma-fonte-de-dados/</link>
		<comments>http://javascript.singuska.com/2010/03/12/hhselectmaker-um-plugin-para-criar-selects-a-partir-de-uma-fonte-de-dados/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 16:20:27 +0000</pubDate>
		<dc:creator>Flávio</dc:creator>
				<category><![CDATA[Outros]]></category>
		<category><![CDATA[dom]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://javascript.singuska.com/?p=473</guid>
		<description><![CDATA[Criei um plugin jQuery para criar selects no DOM a partir de um vetor de dados. O código do plugin abaixo: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 &#40;function&#40;$&#41;&#123; $.fn.hhSelectMaker = function&#40;data, cfg&#41; &#123; &#160; var cfg = cfg &#124;&#124; [...]]]></description>
			<content:encoded><![CDATA[<p>Criei um plugin jQuery para criar selects no DOM a partir de um vetor de dados. O código do plugin abaixo:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #ffffff;">&#40;</span><span style="color: #fbde2d; font-weight: bold;">function</span><span style="color: #ffffff;">&#40;</span>$<span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">&#123;</span>
	$.<span style="color: #6591f7;">fn</span>.<span style="color: #6591f7;">hhSelectMaker</span> <span style="color: #ffffff;">=</span> <span style="color: #fbde2d; font-weight: bold;">function</span><span style="color: #ffffff;">&#40;</span>data<span style="color: #ffffff;">,</span> cfg<span style="color: #ffffff;">&#41;</span> <span style="color: #ffffff;">&#123;</span>
&nbsp;
		<span style="color: #fbde2d; font-weight: bold;">var</span> cfg <span style="color: #ffffff;">=</span> cfg <span style="color: #ffffff;">||</span> <span style="color: #ffffff;">&#123;</span><span style="color: #ffffff;">&#125;</span><span style="color: #ffffff;">;</span>
		<span style="color: #fbde2d; font-weight: bold;">if</span> <span style="color: #ffffff;">&#40;</span> <span style="color: #ffffff;">!</span>cfg.<span style="color: #6591f7;">key</span><span style="color: #ffffff;">&#41;</span> cfg.<span style="color: #6591f7;">key</span> <span style="color: #ffffff;">=</span> <span style="color: #61ce3c;">'key'</span><span style="color: #ffffff;">;</span>
		<span style="color: #fbde2d; font-weight: bold;">if</span> <span style="color: #ffffff;">&#40;</span> <span style="color: #ffffff;">!</span>cfg.<span style="color: #6591f7;">value</span><span style="color: #ffffff;">&#41;</span> cfg.<span style="color: #6591f7;">value</span> <span style="color: #ffffff;">=</span> <span style="color: #61ce3c;">'value'</span><span style="color: #ffffff;">;</span>
		<span style="color: #fbde2d; font-weight: bold;">if</span> <span style="color: #ffffff;">&#40;</span> <span style="color: #ffffff;">!</span>cfg.<span style="color: #6591f7;">selected</span><span style="color: #ffffff;">&#41;</span> cfg.<span style="color: #6591f7;">selected</span> <span style="color: #ffffff;">=</span> <span style="color: #fbde2d; font-weight: bold;">false</span><span style="color: #ffffff;">;</span>
&nbsp;
		<span style="color: #fbde2d; font-weight: bold;">var</span> snippet <span style="color: #ffffff;">=</span> <span style="color: #61ce3c;">''</span><span style="color: #ffffff;">;</span>
		<span style="color: #fbde2d; font-weight: bold;">for</span> <span style="color: #ffffff;">&#40;</span><span style="color: #fbde2d; font-weight: bold;">var</span> i <span style="color: #ffffff;">=</span> <span style="color: #f78465;">0</span><span style="color: #ffffff;">;</span> i <span style="color: #ffffff;">&lt;</span> data.<span style="color: #6591f7;">length</span><span style="color: #ffffff;">;</span> i<span style="color: #ffffff;">++</span><span style="color: #ffffff;">&#41;</span> <span style="color: #ffffff;">&#123;</span>
&nbsp;
			snippet <span style="color: #ffffff;">+=</span> <span style="color: #61ce3c;">&quot;&lt;option value='&quot;</span> <span style="color: #ffffff;">+</span> data<span style="color: #ffffff;">&#91;</span>i<span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">&#91;</span>cfg.<span style="color: #6591f7;">key</span><span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">;</span> 
&nbsp;
			<span style="color: #fbde2d; font-weight: bold;">if</span> <span style="color: #ffffff;">&#40;</span>cfg.<span style="color: #6591f7;">selected</span> <span style="color: #ffffff;">===</span> data<span style="color: #ffffff;">&#91;</span>i<span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">&#91;</span>cfg.<span style="color: #6591f7;">key</span><span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">&#41;</span> <span style="color: #ffffff;">&#123;</span>
				snippet <span style="color: #ffffff;">+=</span> <span style="color: #61ce3c;">&quot; selected='selected' &quot;</span><span style="color: #ffffff;">;</span>
			<span style="color: #ffffff;">&#125;</span>
&nbsp;
			snippet <span style="color: #ffffff;">+=</span> <span style="color: #61ce3c;">&quot;'&gt;&quot;</span> <span style="color: #ffffff;">+</span> data<span style="color: #ffffff;">&#91;</span>i<span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">&#91;</span>cfg.<span style="color: #6591f7;">value</span><span style="color: #ffffff;">&#93;</span> <span style="color: #ffffff;">+</span> <span style="color: #61ce3c;">'&lt;/option&gt;'</span><span style="color: #ffffff;">;</span>
		<span style="color: #ffffff;">&#125;</span>
		<span style="color: #fbde2d; font-weight: bold;">return</span> <span style="color: #fbde2d; font-weight: bold;">this</span>.<span style="color: #6591f7;">append</span><span style="color: #ffffff;">&#40;</span>snippet<span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span>
	<span style="color: #ffffff;">&#125;</span><span style="color: #ffffff;">;</span>
<span style="color: #ffffff;">&#125;</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">&#40;</span>jQuery<span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span></pre></td></tr></table></div>

<h3>Como funciona?</h3>
<p><a href="http://javascript.singuska.com/exemplos/hhSelectMaker/">Montei dois exemplos</a> para ilustrar o funcionamento do plugin.<br />
O plugin recebe dois argumentos. O primeiro, obrigatório, é a fonte de dados. O segundo, opcional, é a configuração da fonte de dados.</p>
<p>Caso somente o primeiro argumento seja passado, o plugin espera um estrutura de dados no seguinte formato:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #fbde2d; font-weight: bold;">var</span> dados <span style="color: #ffffff;">=</span> <span style="color: #ffffff;">&#91;</span>
    <span style="color: #ffffff;">&#123;</span> key<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'Chave1'</span><span style="color: #ffffff;">,</span> value<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'Valor1'</span> <span style="color: #ffffff;">&#125;</span><span style="color: #ffffff;">,</span>
    <span style="color: #ffffff;">&#123;</span> key<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'Chave2'</span><span style="color: #ffffff;">,</span> value<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'Valor2'</span> <span style="color: #ffffff;">&#125;</span><span style="color: #ffffff;">,</span>
    <span style="color: #ffffff;">&#123;</span> key<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'Chave3'</span><span style="color: #ffffff;">,</span> value<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'Valor3'</span> <span style="color: #ffffff;">&#125;</span>
    <span style="color: #bfbfbf; font-style: italic;">// etc...</span>
<span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">;</span></pre></div></div>

<p>O nome das chaves pode ser modificado utilizando-se o segundo argumento:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #ffffff;">&#40;</span><span style="color: #61ce3c;">'select'</span><span style="color: #ffffff;">&#41;</span>.<span style="color: #6591f7;">hhSelectMaker</span><span style="color: #ffffff;">&#40;</span>dados<span style="color: #ffffff;">,</span> <span style="color: #ffffff;">&#123;</span>
	key<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'id'</span><span style="color: #ffffff;">,</span> value<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'nome'</span><span style="color: #ffffff;">,</span> selected<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'5'</span>				
<span style="color: #ffffff;">&#125;</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span></pre></div></div>

<p>Configurando-se o plugin desta maneira a estrutura de dados esperada é a seguinte:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #fbde2d; font-weight: bold;">var</span> dados <span style="color: #ffffff;">=</span> <span style="color: #ffffff;">&#91;</span>
    <span style="color: #ffffff;">&#123;</span> id<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'Chave1'</span><span style="color: #ffffff;">,</span> nome<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'Valor1'</span> <span style="color: #ffffff;">&#125;</span><span style="color: #ffffff;">,</span>
    <span style="color: #ffffff;">&#123;</span> id<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'Chave2'</span><span style="color: #ffffff;">,</span> nome<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'Valor2'</span> <span style="color: #ffffff;">&#125;</span><span style="color: #ffffff;">,</span>
    <span style="color: #ffffff;">&#123;</span> id<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'Chave3'</span><span style="color: #ffffff;">,</span> nome<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'Valor3'</span> <span style="color: #ffffff;">&#125;</span>
    <span style="color: #bfbfbf; font-style: italic;">// etc...</span>
<span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">;</span></pre></div></div>

<p>Além disso, a chave <em>selected</em> permite que um determinado valor seja selecionado como padrão após o carregamento do plugin.</p>
]]></content:encoded>
			<wfw:commentRss>http://javascript.singuska.com/2010/03/12/hhselectmaker-um-plugin-para-criar-selects-a-partir-de-uma-fonte-de-dados/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

