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.