O jQuery, sem sombra de dúvidas, revolucionou a maneira como escrevemos Javascript. Baseado no atalho
$ para document.getElementById, o jQuery estendeu-o muito além do que se podia imaginar, misturando-o com a função document.getElementsBySelector.Além do evidente aumento de produtividade, o tamanho da biblioteca impressiona: a versão 1.2.3 tem apenas 29kb para fazer tudo o que você precisa: requisições AJAX, iteração e criação de elementos DOM, tratamento de eventos... resumindo, é uma biblioteca completa, sem deixar a simplicidade de lado.
Uma coisa que deve ficar muito clara quando você começa a trabalhar com jQuery são os seletores disponíveis, baseados em CSS 1-3 e alguns adicionados pelo próprio jQuery. Sem eles, você não tem por onde começar. Então, aqui vai uma lista super-detalhada dos seletores disponíveis no jQuery.
Seletores
Os exemplos que mostrarei são baseados no seguinte markup:
<body>
<h1>jQuery Selectors</h1>
<h2>This is a visible H2</h2>
<h2 style="display: none;">This is a hidden H2</h2>
<p>This is just a dummy text.</p>
<p>This is just a dummy text too.</p>
<ul id="list" class="list-class">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
<p>
<strong>Sample:</strong> Visit our
<a href="#" target="_blank" id="sample">sample page</a>!
</p>
<div id="empty-div"></div>
<div>
<p>
<span>
<em>Inside a span</em>
</span>
</p>
<p>
<em>Inside a paragraph</em>
</p>
</div>
<p>
<input type="button" disabled="disabled" value="Disabled button" />
<input type="button" value="Click me!" />
<button>Click me too!</button>
</p>
<p>
<input type="checkbox" id="checkbox" checked="checked" />
<label for="checkbox">I'm checked</label>
</p>
<p>
<select>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3" selected="selected">Option 3</option>
</select>
</p>
<dl>
<dt>Colors</dt>
<dd class="color">Blue</dd>
<dt>Shapes</dt>
<dd class="shape">Circle</dd>
<dt>Words</dt>
<dd class="word">Power</dd>
</dl>
</body>CSS 1-3
*: qualquer elemento.$('p.comment-meta *'); // get all elements inside p.comment-metaE: pega qualquer elemento com o nomeE.$('div'); // get all div tagsE:nth-child(n): em um elementoE, pega o elementonde seu pai.$('li:nth-child(2)'); // get <li>Item 2</li>E:first-child: em um elementoE, pega o primeiro filho de seu pai.$('li:first-child'); // get <li>Item 1</li>E:empty: um elementoEque não possui filhos.$('div:empty'); // get <div id="empty-div"></div>E:enabled: um elementoEque está ativo.$('input:enabled'); // get <input type="button" value="Click me!" />E:disabled: um elementoEque está inativo.$('input:disabled'); // get <input type="button" disabled="disabled" value="Disabled button" />E:checked: um elementoE(radio ou checkbox) que está selecionado.$('input:checked'); // get <input type="checkbox" checked="checked" />E:selected: um elementoE(option) que está selecionado.$('option:selected'); // get <option value="3">Option 3</option>E F: um elementoEque tenha um filhoF.$('p strong'); // get <strong>Sample:</strong>E > F: um elementoFdentro deE.$('p > em'); // get <em>Inside a paragraph</em> but not <span><em>Inside a span</em></span>E + F: elementoFimediatamente precedido por um elementoE.$('h1 + p'); // get <p>This is just a dummy text.</p>E ~ F: elementosFprecedido por um elementoE.$('h1 ~ ul'); // get <ul id="list" class="list-class">E,F,G: elementosE,FeG.$('h1,ul'); // get <h1> and <ul>E[attr]: elementosEque possuam o atributoattr.$(':checkbox[checked]'); // get <input type="checkbox" id="checkbox" />E[attr^=value]: elementosEque possuam um atributoattrcujo valor inicie-se porvalue.$('[id^=empty]'); // get <div id="empty-div"></div>E[attr$=value]: elementosEque possuam um atributoattrcujo valor termine comvalue.$('[id$=div]'); // get <div id="empty-div"></div>E[attr*=value]: elementosEque possuam um atributoattrcujo valor contenhavalue.$('dd[class*=o]'); // get <dd class="color"> and <dd class="word">E[attr=value]: elementos cujo atributoattrtenham valor igual avalue.$('dd[class=word]'); // get <dd class="word">
Adicionados pelo jQuery
:even: todos os elementos de índice par. Os índices se iniciam em zero.$('option:even'); // get <option value="1"> and <option value="3">:odd: todos os elementos de índice ímpar.$('option:odd'); // get <option value="2">:eq(N)e:nth(N): seleciona o elemento de índiceN.$('option:eq(0)'); // get <option value="1"> $('option:nth(1)'; // get <option value="2">:gt(N): seleciona os elementos cujo índice sejam maior queN.$('li:gt(1)'); // get <li>Item 3</li>:lt(N): seleciona os elementos cujo índice seja menores queN.$('li:lt(1)'); // get <li>Item 1</li>:first: equivalente a:eq(0).$('li:first'); // get <li>Item 1</li>:last: seleciona o último elemento.$('li:last'); // get <li>Item 3</li>:parent: seleciona os elementos que têm filhos (incluindo textos).$('h1:parent'); // get <h1>jQuery Selectors</h1>:contains('text'): seleciona os elementos que têm o texto especificado.$('li:contains("Item 1")'); // get <li>Item 1</li>:visible: seleciona todos os elementos visíveis (não inclui elementos de formuláriohidden).$('h2:visible'); // get <h2>This is a visible H2</h2>:hidden: seleciona campos de formuláriohiddene elementos não-visíveis.$('h2:hidden'); // get <h2 style="display: none;">This is a hidden H2</h2>
Formulários
O jQuery fornece alguns atalhos para se trabalhar com campos de formulário, evitando que você tenha que usar um seletor de atributo (
input[type=radio], por exemplo). Veja como é simples::input: seleciona qualquer tipo de campo de formulário (input, button, textarea, select).:text: seleciona campos comtype="text".:password: seleciona campos comtype="password".:radio: seleciona campos comtype="radio".:checkbox: seleciona campos comtype="checkbox".:file: seleciona campos comtype="file".:submit: seleciona campos comtype="submit".:image: seleciona campos comtype="image".:reset: seleciona campos comtype="reset".:button: seleciona campos comtype="button"ou<button></button>.
Exemplos práticos
Agora você conhece os seletores do jQuery, veja alguns exemplos mostrando como usar este framework.
- Executando códigos no após o carregamento da página (onload) - ready.html
- Zebrar uma tabela, adicionando uma classe de CSS - zebra-table.html
- Adicionar um evento
onmouseovernas linhas de uma tabela, alterando a cor de fundo - table-row.html - Iterar em uma lista de elementos retornados - iteration.html
- Mover itens de uma lista para outra - list-items.html
- Carregar HTML em um elemento - html-content.html
- Carregar dados em formato JSON - json-content.html
- Exibir/Esconder elementos - show-hide.html
...
O jQuery possui uma série de outras funcionalidades que não foram citadas aqui. Para mais informações, você deve acessar a documentação do projeto. Ela também está disponível em um formato muito fácil de vsualizar em Visual jQuery.