/ / Lista de seletores separados por vírgula? - jquery, seletores de jquery

Lista separada por vírgula de seletores? - jquery, jquery-selectors

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 № 1

Este 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/