2012-01-30 16 views
6

La siguiente línea de código viene del oficial dialog/#modal-form example

allFields = $([]).add(name) 

Podría alguien por favor aclarar lo $([]) hace? ¿Es lo mismo que $("*")?

Otra cosa que me desconcertó es que no vi allFields que se agrega/anexa a cualquier lugar/cualquier objeto, solo se crea y modifica. ¿Me estoy perdiendo de algo?

Respuesta

3

Si echa un vistazo al doco for the jQuery() function, generalmente visto como la versión abreviada $(), verá que acepta varios tipos diferentes y combinaciones de parámetros.

La sintaxis que se preguntó acerca de:

$([]) 

es la sintaxis jQuery(elementArray) que le permite pasar una matriz de elementos DOM donde el retorno será un objeto jQuery envolver esos elementos. Al pasar una matriz vacía, básicamente obtienes un objeto jQuery vacío (tal como lo harías si pasaras una cadena de selector que no coincidía con nada, pero sin la ineficacia de tratar de encontrar una coincidencia primero).

Cuando creado allFields tiene tres elementos DOM añadidos a la misma (donde name, email y password son creados justo antes de que como objetos jQuery que contienen un elemento DOM cada uno):

allFields = $([]).add(name).add(email).add(password) 

Presumiblemente, la ventaja de añadir el individuo artículos en lugar de sólo hacer:

allFields = $("#name,#email,#password") 

es que también eran necesarios los objetos individuales para cada elemento y habrían sido creados de todos modos, así que no hay necesidad molestarse en volver a seleccionarlos mediante una cadena de consulta.

Otra cosa desconcertado mí es que no vi allFields ser añadido/anexa a cualquier lugar/cualquier objeto, sólo se crea y modifica, me estoy perdiendo algo?

que se conoce en otros dos lugares en el código:

allFields.removeClass("ui-state-error"); 
// and, later 
allFields.val("").removeClass("ui-state-error"); 

Este es el uso bastante estándar jQuery para eliminar una clase o establecer el valor de todos los elementos en el objeto jQuery. No es necesario que se agregue a algún otro objeto.

5

$([]) crea un objeto jQuery vacío, al igual que $(). $('*') crea un objeto jQuery que contiene todos los elementos que coinciden con el selector de CSS *, que coincidirá con cada elemento.

En otras palabras, $([]) no obtiene nada, $('*') obtiene de todo.

1

jQuery (ElementArray)

ElementArray: Una matriz que contiene un conjunto de elementos DOM para envolver en un objeto jQuery .

$([]) crear en un conjunto vacío que envuelve un objeto jQuery.

1

Parece que se está refiriendo a las siguientes líneas:

var name = $("#name"), 
    email = $("#email"), 
    password = $("#password"), 
    allFields = $([]).add(name).add(email).add(password) 

Lo que ocurre aquí es que se seleccionaron tres elementos, y ahora quieren crear un único objeto jQuery que hace referencia a los tres.

Este es el mismo que el siguiente, salvo que evitaran las llamadas selectores:

allFields = $("#name, #email, #password") 

En esencia, crearon un jQuery objeto elemento cero con $([]) continuación se adjunta, nombre, correo electrónico y contraseña para la final objeto era un objeto jQuery de longitud 3.