Vários parâmetros para o seletor jQuery?

112

Eu estava apenas olhando para o plug-in do botão jQueryUI e percebi que

$("button, input:submit, a", ".demo").button();

Eu nunca vi algo assim. É como várias seleções em um seletor jQuery?

chobo2
fonte

Respostas:

172

O segundo argumento ( ".demo"no seu exemplo) é o contexto , basicamente, seu seletor é restrito para corresponder apenas aos descendentes de um determinado contexto :

$(expr, context)

É apenas equivalente a usar o findmétodo:

$(context).find(expr)

Dê uma olhada na documentação da função jQuery :

Contexto do Seletor

Por padrão, os seletores realizam suas pesquisas no DOM, começando na raiz do documento. No entanto, um contexto alternativo pode ser fornecido para a pesquisa usando o segundo parâmetro opcional para a $()função. Por exemplo, se em uma função de retorno de chamada quisermos fazer uma pesquisa por um elemento, podemos restringir essa pesquisa:

$('div.foo').click(function() {
  $('span', this).addClass('bar');
  // it will find span elements that are
  // descendants of the clicked element (this)
});

Observe também que o seletor que você postar "button, input:submit, a"é chamado de Seletor múltiplo , e lá você pode especificar qualquer número de seletores para combinar em um único resultado, apenas separando-os por uma vírgula.

CMS
fonte
Cool nunca soube disso. Quando eu quis limitar, digamos, um setor de classe para que ele não pesquisasse a página inteira, eu apenas fiz algo como $ ('# id .class')
chobo2
Isso realmente está ao contrário do que você teria pensado olhando para a fonte. Eu esperaria que o primeiro arg fosse a superclasse seguida por subclasses que o restringem. Ah bem.
light24bulbs
3
É mais rápido para o navegador se eu definir um contexto?
Andres SK