Estou refatorando algum código no momento e encontrei um seletor:
jQuery("tr","#ctl00_MainContent_MyUserControl").each(function(i,row) { ... }
Parece que está selecionando <tr>
"s do controle do usuário na página (ignore ofato de que a instância é totalmente nomeada!), mas ela não é uma sintaxe que eu conheço e não consigo encontrar nada na documentação. Eu esperava que fosse escrita:
$("#ctl00_MainContent_MyUserControl tr").each(function(i,row) { ... }
Alguém pode me dizer se há uma diferença (sutil ou não) que estou perdendo aqui?
Respostas:
16 para resposta № 1Este seletor seleciona tudo tr
elementos dentro de um elemento com id ctl00_MainContent_MyUserControl
. É exatamente o mesmo que o seu segundo exemplo.
O segundo parâmetro fornece um contexto para o primeiro parâmetro. Existem melhores casos de uso para esta sintaxe, por exemplo:
function(el) {
$("tr", el).each(...);
}
Onde el
é um elemento da sua página. Nesse caso, você não pode usar o segundo formulário de sintaxe.
14 para resposta № 2
Chamando o jQuery()
método com dois argumentos (selector
e context
) é equivalente a jQuery(context).find(selector)
. Portanto:
jQuery("tr","#ctl00_MainContent_MyUserControl");
é igual a:
jQuery("#ctl00_MainContent_MyUserControl").find("tr");
que também é igual a:
jQuery("#ctl00_MainContent_MyUserControl tr");
Minha opinião pessoal é que o uso de context
só faz sentido quando você pode passar um elemento já selecionado (jQuery
ou DOM
), nem tanto quando você passa em um seletor (String
) Nesse caso, eu simplesmente prefiro imitar o seletor de CSS: por exemplo, #ctl00_MainContent_MyUserControl tr
.
3 para resposta № 3
É exatamente o mesmo. Também poderia ter sido escrito:
$("#ctl00_MainContent_MyUserControl").find("tr").each(function(i,row) { ... }
A sintaxe para o primeiro pode ser vista no documentação do construtor jQuery. É "basicamente" encontrar todos os elementos que correspondem ao primeiro seletor, que é um descendente do segundo correspondido pelo segundo ".
2 para resposta № 4
O segundo argumento para o construtor jQuery (quando o primeiro é um seletor) é o contexto.
Nos documentos da API
contexto Um elemento DOM, documento ou jQuery para usar como contexto
Vejo http://api.jquery.com/jQuery/