Cada dia que passa eu me torno mais fã do jQuery e eu incentivo fortemente o seu uso.
Por isso resolvi escrever sobre a maravilha dos seletores em jQuery.
Uma das formas de utilizar esses seletores é muito similar aos seletores CSS. Já expliquei um pouco sobre isso aqui.
O básico
Selecionando elementos por tag.
Para fazer isso basta colocar o nome da tag como parâmetro.
Por exemplo a linha abaixo esconde todas as imagens que tem na página:
$('img').hide(); //esconde todos os elementos img
Selecionando elementos por id.
É muito similar ao modo como você define um estilo para um determinado Id. Você só precisa colocar o (#) seguido do nome do Id:
$('#meuID').hide(); //esconde o elemento que tenha o id meuID
Selecionando elementos por classe.
O código abaixo seleciona e esconde todos os elementos que possuam uma determinada classe css. Você precisa colocar um ponto (.) seguido do nome da classe.
$('.minhaClasse').hide(); //esconde todos os elementos que tenham a classe css minhaClasse
Saindo um pouco do básico
Selecionando elementos que possuam determinado atributo.
Vamos supor que você quer selecionar todos os elementos que tenham um certo atributo definido. Como fazer?
Basta colocar como parâmetro o nome do atributo entre colchetes ([]).
A linha abaixo mostra como esconder ou mostrar os elementos que tenham o atributo title:
$('[title]').hide(); // ESCONDE todos os elemento da página que tenham o atributo title definido
$('[title]').show(); // MOSTRA todos os elemento da página que tenham o atributo title definido
No caso acima é selecionado todos os elementos que possuem o atributo title preenchido. Não importando qual é seu conteúdo.
Se por exemplo você quiser saber todas as imagens que tenham o atributo width igual a 240 (largura de 240 px).
$('[width=240]'); // Seleciona todos os elementos que tenham a largura de 240 px
Podemos combinar o que aprendemos até agora.
Por exemplo se utilizarmos a linha acima ($(’[width=240]‘);) pode ser que venha selecionado um outro elemento que não seja imagem.
Mas como queremos apenas as IMAGENS, basta adicionar a tag img no parâmetro passado para o jQuery. Fica assim:
$('img[width=240]'); // Seleciona todas IMAGENS que tenham a largura de 240 px
Você pode também selecionar as imagens que tenha a largura DIFERENTE de 240 pixels por colocar uma negação (!):
$('img[width!=240]').hide(); // Seleciona todas IMAGENS que tenham a largura DIFERENTE de 240 px
E se você precisar selecionar todos os links da sua página que apontam para um determinado site.
É o jQuery faz isso para você!
Para isso precisamos usar (^) que indica que queremos todos os elementos que tenham um determinado atributo inciando com tal sequência de caracteres:
$('a[href^=http://www.meusite.com.br]'); // Seleciona todos os LINKS cujo o atributo HREF iniciam com http://www.meusite.com.br
E é claro que você também pode selecionar elemento que terminem com determinado conjunto de caracteres. Como por exemplo pegar todos as imagens JPGs ou links para PDFs. Bastando colocar o ($) no lugar do (^):
$('img[src$=jpg]'); // Seleciona todas as IMAGENS com extenção JPG
$('a[href$=pdf]'); // Seleciona todos os links para PDFs
Caso seu objetivo seja selecionar todos os elementos que possuam um determinado conjunto de caracteres idependente se eles estão no inicio ou no final basta utilizar o (*):
$('a[href*=www]'); // Seleciona todos os links para que contenham os caracteres <em>www</em> no atributo href
Combinando seletores.
Agora que você já sabe tudo isso sobre seletores do jQuery você precisa saber que também pode combiná-los.
Como por exemplo selecionar todas as IMAGENS que possuam “foto” no atributo alt e que tenham os caracteres “flickr.com” no atributo src.
$("img[alt*=foto]img[src*=flickr]");
Um pouco mais longe do básico
Selecionando elementos vazios.
Outra grande ajuda é se você quer selecionar os elementos que estão vazios:
$(':empty'); // Seleciona todos os elementos que estão vazios: DIVs, TDs, SPANs, INPUTs, etc. Se está vazio o jQuery encontra-o.
$('p:empty'); // Ou você pode ser mais específico e selecionar apenas os parágrafos vazios.
Selecionando elementos com elementos.
Ou então selecionar todos os elementos que possuam dentro dele um outro elemento. Por exemplo parágrafo (p)
$(':has(p)') // Seleciona todos os elementos que tenham elementos
dentro dele.
$('p:has(img)'); // Ou selecionar apenas os parágrafos que contenham imagens.
Selecionando elementos que contém determinadas palavras.
Suponhamos que você tenha precise esconder selecionar todos as DIVs que contenham a palavra “terra”. A forma mais simples de fazer tal coisa é:
$("div:contains('terra')").hide(); // Esconde todos os DIVs que contenham a palavra "terra".
Mais um pouco sobre os seletores
$("img:visible").hide(); // Seleciona todas os IMAGENS VISÍVEIS e esconde-as.
$("img:hide").show(); // Seleciona todas os IMAGENS ESCONDIDAS e mostra-as.
$("p:eq(0)").hide(); // Seleciona e esconde o primeiro parágrafo que encontrar.
$("p.minhaClasse[img]"); // Seleciona os parágrafos que contenham a classe minhaClasse e uma imagem dentro dele.
Fim da aula de seletores
Você pode aprender mais sobre os seletores lendo a documentação do jQuery sobre seletores.
E agora que você já sabe bastante sobre eles, em breve vou explicar o que você pode fazer com os elementos selecionados.