2011-09-16 7 views
14

Estoy repasando algunos tutoriales de backbone y tengo una pregunta general de jQuery que en realidad me he estado preguntando por un tiempo.

A veces veo llamadas con un segundo parámetro en el selector jQuery, por ejemplo $('ul', this.el).

¿Cuál es el propósito de este segundo parámetro en el selector? Y realmente no me refiero en el contexto de ningún ejemplo de red troncal, solo en general, ¿cuál es el propósito de pasar el segundo parámetro en el selector y por qué siempre es un objeto el que pasa allí? No puedo encontrar ninguna documentación sobre esto.

+0

lo estaba buscando ... no lo pudo encontrar. gracias por el enlace aunque – user834418

Respuesta

10

Estrecha la búsqueda de una etiqueta ul en el elemento DOM de su componente de vista.

+0

Ah, bien! Pensé que estaba haciendo algo así, pero no pude verbalizarlo. ¡Gracias! – user834418

+1

por cierto, ¿sabe usted si hay algún beneficio en el rendimiento al hacerlo así en lugar de $ (this.el) .find ('ul'); o $ (this.el + 'ul'); o es esencialmente lo mismo? – user834418

14

El significado es idéntico a:

$(this.el).find('ul') 

Internamente, después de un montón de pruebas, jQuery se da cuenta de que tiene que darle la vuelta a la .find() llamada anterior, por lo que hace, y comienza de nuevo.

Proporcionar el contexto como el segundo argumento es solo una forma más lenta de hacer un .find().

Here it is in the source.

// HANDLE: $(expr, context) 
// (which is just equivalent to: $(context).find(expr) 
} else { 
    return this.constructor(context).find(selector); 
} 

... donde this.constructor es la función $, context es su segundo argumento, y selector es su primer argumento.