Dúvida sutil com seletores por ID

14 views
Skip to first unread message

Cleyton Euler Trevizan

unread,
Aug 26, 2015, 9:54:50 AM8/26/15
to jque...@googlegroups.com
Boa noite pessoal,

Lendo boas práticas em jQuery, fiquei com uma dúvida sutil com relação a seleção de objetos por ID.

Cheguei a conclusão que a seleção por ID é sempre a mais rápida e menos "custosa".

Na opinião da galera mais experiente, ao utilizar o .find() para limitar o escopo numa busca por ID tenho algum ganho de desempenho significativo?

Exemplo:

<form id="cadastro">

...

<input id="cidade" />

</form>

Posso selecionar assim:
$('#cidade')

ou assim:
$('#cadastro').find('#cidade')

Att.,
Cleyton

Everton Amaral Pereira

unread,
Aug 26, 2015, 3:42:30 PM8/26/15
to jque...@googlegroups.com
Acho que (acho..) a primeira opção é mais rápida.

Porque na segunda, primeiro ele tem que achar o elemento #cadastro, pra depois procurar o #cidade. Aí são duas consultas.

A menos que tu precise do elemento #cadastro pra alguma outra coisa, aí seria uma boa manter ele em uma variável, pra depois só procurar os elementos dentro dele.

--
--
Grupo de jQuery Brasil.
 
REGRAS: https://docs.google.com/document/d/1VfvTDmeHTSj-L5ouZJjQQ4OkjTCU1Hr2XtPYBNGVHH4/edit
 
USE O JSBIN.COM / JSFIDDLE.NET PARA CÓDIGOS.
 
Email: jque...@googlegroups.com
Biba: jquery-br+...@googlegroups.com
Site: http://groups.google.com/group/jquery-br?hl=pt-BR

---
Você recebeu essa mensagem porque está inscrito no grupo "jQuery (Brasil)" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para jquery-br+...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--

Jonas Rodrigues

unread,
Sep 1, 2015, 8:24:05 AM9/1/15
to jque...@googlegroups.com
Então.... pode ser rapida quando vc tem muitos elementos no dom... pois quando vc faz da segunda forma é a mesma coisa que fizesse um filtro por cadastro... 
ex: em sql 1º forma: SELECT * FROM TABELA WHERE ID=cidade; 
ex: em sql 2º forma: SELECT cidade FROM TABELA WHERE ID=cadastro;
Nesse caso que descrevi, a segunda forma é mais rapida, pois vc está sendo especifico no que está procurando.
No seu caso, acredito que seja o mesmo, pois vc ja está dizendo que quer a cidade que está dentro de cadastro, Então ele vai procurar dentro daquele bloco. Mas, pode ser que eu tenha falado um monte de besteiras..
Jonas Rodrigues
Analista Programador

Leonardo Cruz Costa

unread,
Sep 1, 2015, 9:22:48 AM9/1/15
to jque...@googlegroups.com
Bom dia.
Na minha opinião, como o ID é sempre único em uma página, então chamar $('#cidade') é mais rápido que chamar $('#cadastro').find('#cidade'). Aliás, exatamente porque o ID é único, não faz muito sentido você procurar por ele usando .find(). Se você quiser ser mais específico na localização do #cidade e reduzir o tempo de procura interna do jQuery, então a forma $('#cadastro #cidade') te ajuda.

https://jsfiddle.net/

Leonardo Cruz Costa

unread,
Sep 1, 2015, 9:23:53 AM9/1/15
to jque...@googlegroups.com

Gustavo Fragoso

unread,
Sep 2, 2015, 6:52:05 AM9/2/15
to jQuery (Brasil)
Já que o ID é único, não tem muito sentido você especificar o caminho. 
Não pode ter outro elemento com o mesmo ID. Então o use o primeiro seletor. O segundo seletor é mais lento, pouca coisa mas tende a ser.

Cleyton Euler Trevizan

unread,
Sep 2, 2015, 2:30:56 PM9/2/15
to jque...@googlegroups.com
Galera, tem sido uma conversa interessante!

Alguns defendem que a segunda opção, apesar de buscar um ID dentro de outro ID, especifica o escopo da busca, diminuindo o tempo. O que para mim, faz sentido em projetos muito grande, caso esta premissa seja verdadeira.

Imaginando que a busca sempre lê o código do início sempre, até faz algum sentido.

--
Reply all
Reply to author
Forward
0 new messages