¿Múltiples parámetros para jQuery selector?


112

Estaba mirando el complemento del botón jQueryUI y noté esto

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

Nunca vi algo como esto. ¿Es esto como selecciones múltiples en un selector de jQuery?

Respuestas:


172

El segundo argumento ( ".demo"en su ejemplo) es el contexto , básicamente su selector está restringido para coincidir solo con descendientes de un contexto determinado :

$(expr, context)

Es equivalente a usar el findmétodo:

$(context).find(expr)

Eche un vistazo a la documentación de la función jQuery :

Contexto del selector

De forma predeterminada, los selectores realizan sus búsquedas dentro del DOM comenzando en la raíz del documento. Sin embargo, se puede proporcionar un contexto alternativo para la búsqueda utilizando el segundo parámetro opcional de la $()función. Por ejemplo, si dentro de una función de devolución de llamada deseamos hacer una búsqueda de un elemento, podemos restringir esa búsqueda:

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

También observe que el selector que publica "button, input:submit, a"se llama Selector múltiple , y allí puede especificar cualquier número de selectores para combinar en un solo resultado, simplemente separándolos con una coma.


Cool nunca lo supo. Cuando quería limitar, digamos como un sector de clase para que no buscara en toda la página, simplemente hice algo como $ ('# id .class')
chobo2

Eso es realmente al revés de lo que hubiera pensado al mirar la fuente. Esperaría que el primer argumento sea la superclase seguida de subclases que la reducen. Ah bueno.
light24bulbs

3
¿Es más rápido para el navegador si defino un contexto?
Andres SK
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.