2010-04-13 22 views
5

He encontrado el siguiente código jQuery pero no pude entenderlo. ¿Qué significa el siguiente código, especialmente la parte "$ ([])" en la última línea?

var instrument = $("#instrument"), 
    quantity = $("#quantity"), 
    orderType = $("#orderType"), 
    price = $("#price"), 
    validityDate = $("#validityDate"), 
    allFields = $([]).add(instrument).add(quantity).add(orderType).add(price).add(validityDate) 

Respuesta

10

parece que es la definición de una matriz, entonces add() ción de los elementos DOM a la misma. Desde el manual:

Dado un objeto jQuery que representa un conjunto de elementos DOM, la .add() método construye un nuevo objeto jQuery de la unión de aquellos elementos y los pasado en el método . El argumento para .add() puede ser prácticamente cualquier cosa que $() acepte, incluida una expresión del selector jQuery , referencias a elementos DOM o un fragmento de HTML.

[] es una matriz javascript vacía. Como frunsi notes, este no es el uso correcto, y la definición [] no es necesaria para crear un conjunto vacío de elementos, en 1.4 $() lo hará por usted.

7

Crea un conjunto jQuery vacío. Este tipo de uso es incorrecto, aunque puede funcionar. El [] es superfluo.

Correcto sería solo $().

Volviendo un conjunto vacío

Como de jQuery 1.4, llamando al método jQuery() sin argumentos devuelve un conjunto de jQuery vacía. En versiones anteriores de jQuery, esto devolvería un conjunto que contiene el nodo del documento.

http://api.jquery.com/jQuery/

2

que crearía un objeto vacío jQuery - es decir, con una colección de 0 nodos DOM referenciados.

Lo más frecuente es que la función jQuery $ se aplique a un selector de CSS, a uno o varios nodos del DOM. En este caso particular, se utiliza la última de estas tres "sobrecargas" para construir un objeto jQuery vacío a partir de un conjunto vacío, al cual se agregan nuevos nodos DOM usando add().

Su ejemplo de código particular es un poco prolijo, sin embargo, como el mismo se podría haber logrado de esta manera:

var allFields = $("#instrument, #quantity, #orderType, #price, #validityDate");