jQuery 1.4 fue lanzado recientemente. Esto no era simplemente una versión de mantenimiento como algunos habían especulado; existen muchos Nuevas características, mejoras y mejoras de rendimiento incluidas en 1.4! Esta publicación cubre las nuevas funciones y mejoras que pueden resultar beneficiosas..
Puede descargar jQuery 1.4 ahora mismo, aquí: http://code.jquery.com/jquery-1.4.js
Pre 1.4, jQuery admitía agregar atributos a una colección de elementos a través de la útil "attr
", que se puede pasar tanto un nombre como un valor de atributo, o un objeto que especifica varios atributos. jQuery 1.4 agrega soporte para pasar un objeto de atributos como el segundo argumento a la función jQuery en sí, al crear el elemento.
Digamos que necesita crear un elemento de anclaje con varios atributos. Con 1.4 es tan simple como:
jQuery ('', id:' foo ', href:' http://google.com ', título:' Conviértete en un Googler ', rel:' externo ', texto:' ¡Ve a Google! ' );
Puede que hayas notado el "texto
"atributo, probablemente te estarás preguntando qué está haciendo allí, después de todo no hay"texto
"atributo para los anclajes. Bueno, jQuery 1.4 utiliza sus propios métodos cuando se pasan ciertos atributos. Por lo tanto, el atributo" texto "especificado anteriormente haría que jQuery llame a".texto()
"Método, pasando" Go to Google! "como su único argumento.
Un mejor ejemplo de esto en acción:
jQuery ('', id:' foo ', css: fontWeight: 700, color:' green ', haga clic en: function () alert (' ¡Se ha hecho clic en Foo! '); );
El "id" se agrega como un atributo regular, pero las propiedades "css" y "click" activan las llamadas de cada método respectivo. El código anterior, antes de la versión 1.4, se habría escrito así:
jQuery ('') .attr (' id ',' foo ') .css (fontWeight: 700, color:' green ') .click (function () alert (' ¡Se ha hecho clic en Foo! '););
Leer más sobre jQuery (…)
Tres nuevos métodos se han agregado al arsenal transversal de DOM en 1.4, "siguientehasta
"prev Hasta que
"y"padres hasta
". Cada uno de estos métodos atravesará el DOM en una dirección determinada hasta que el selector pasado esté satisfecho. Entonces, digamos que tiene una lista de frutos:
Desea seleccionar todos los elementos después de "Apple", pero desea detenerse una vez que llegue a "Fresa". No podría ser más simple:
jQuery ('ul li: contiene (Apple)'). nextUntil (': contiene (Pear)'); // Selecciona Banana, Uva, Fresa
Lea más sobre: prev Hasta que, después hasta que, padres hasta que
En lugar de encadenar un montón de métodos de enlace de eventos, puede agruparlos en la misma llamada, así:
jQuery ('# foo) .bind (click: function () // hacer algo, mouseover: function () // hacer algo, mouseout: function () // hacer algo)
Esto también funciona con ".uno()
".
Leer más sobre .bind (…)
En lugar de solo definir una función de suavizado para una sola animación, ahora puede definir una función de suavizado diferente para cada propiedad que esté animando. jQuery incluye dos funciones de aceleración, swing (predeterminado) y lineal. Para otros deberás descargarlos por separado.!
Para especificar una función de aceleración para cada propiedad, simplemente defina la propiedad como una matriz, con el primer valor como desea animar esa propiedad, y el segundo es la función de flexibilización que debe usar:
jQuery ('# foo'). animate (left: 500, top: [500, 'easeOutBounce'], 2000);
Ver este código en acción.!
También puede definir funciones de aceleración por propiedad en el objeto de opciones opcionales como pares nombre-valor de propiedad en el objeto "specialEasing":
jQuery ('# foo'). animate (left: 500, top: 500, duration: 2000, specialEasing: top: 'easeOutBounce');
Nota del editor: el autor de este artículo, James Padolsey, está siendo modesto. Esta nueva característica fue su idea.!
Lea más sobre la mejora por propiedad
jQuery 1.4 agrega soporte para delegar el "enviar"cambio"atención"y"difuminar"eventos. En jQuery, usamos el".vivir()
"método para delegar eventos. Esto es útil cuando tiene que registrar controladores de eventos en muchos elementos, y cuando se pueden agregar nuevos elementos con el tiempo (usando".vivir()
"es menos costoso que volver a enlazar continuamente).
Pero ten cuidado! Debes usar los nombres de los eventos, "concéntrate en"y"enfoque"Si desea delegar los eventos" foco "y" desenfoque "!
jQuery ('input'). live ('focusin', function () // haz algo con esto);
jQuery 1.4 proporciona una nueva "apoderado
"función bajo el espacio de nombres de jQuery. Esta función toma dos argumentos, ya sea un" alcance "y un nombre de método, o una función y el alcance deseado. La palabra clave" esto "de JavaScript puede ser bastante difícil de mantener. Algunas veces no". t quiere que sea un elemento, sino un objeto que haya creado anteriormente.
Por ejemplo, aquí tenemos un "aplicación
"objeto que tiene dos propiedades, una"clickHandler
"método y un objeto de configuración:
var app = config: clickMessage: 'Hola!' , haga clic enHandler: function () alert (this.config.clickMessage); ;
Los "clickHandler
"método, cuando se llama como"app.clickHandler ()
" tendrá "aplicación
"como su contexto, lo que significa que el"esta
"La palabra clave le permitirá acceder a"aplicación
". Esto funciona bastante bien si simplemente llamamos:
app.clickHandler (); // "¡Hola!" está alerta
Intentemos enlazarlo como un controlador de eventos:
jQuery ('a'). bind ('clic', app.clickHandler);
Cuando hacemos clic en un ancla, no parece funcionar (no se alerta nada). Esto se debe a que jQuery (y la mayoría de los modelos de eventos sanos), de manera predeterminada, establecerá el contexto del controlador como el elemento de destino, es decir, se podrá acceder al elemento que se acaba de hacer clic a través de "esta
". Pero no queremos eso, queremos"esta
"para ser configurado a"aplicación
". Lograr esto en jQuery 1.4 no podría ser más sencillo:
jQuery ('a'). bind ('clic', jQuery.proxy (aplicación, 'clickHandler'));
Ahora cada vez que se hace clic en un ancla, "¡Hola!" será alertado!
La función proxy devuelve una versión "ajustada" de su función, con "esta
"configurado a lo que usted especifique. También es útil en otros contextos, como pasar devoluciones de llamadas a otros métodos jQuery o a complementos.
Leer más sobre jQuery.proxy
Ahora puede agregar un retraso a sus colas de animación. De hecho, esto funciona en cualquier cola, pero su caso de uso más común probablemente será con la cola "fx". Esto le permite pausar entre animaciones sin tener que meterse con devoluciones de llamada y llamadas a "setTimeout
". El primer argumento para".retrasar()
"es la cantidad de milisegundos que desea retrasar.
jQuery ('# foo') .slideDown () // Deslice hacia abajo .delay (200) // No haga nada durante 200 ms .fadeIn (); // Fundirse
Si desea retrasar una cola que no sea la cola predeterminada "fx", deberá pasar el nombre de la cola como el segundo argumento a ".retrasar()
".
Leer más sobre .retraso (…)
jQuery 1.4 facilita la verificación de un elemento (o colección) ".tiene()
"algo. Este es el equivalente programático al filtro de selección de jQuery":tiene()
". Este método seleccionará todos los elementos de la colección actual que contengan al menos un elemento que cumpla con el selector pasado.
jQuery ('div'). tiene ('ul');
Eso seleccionaría todos los elementos DIV que contienen elementos UL. En esta situación, probablemente solo utilizaría el filtro selector (":tiene()
"), pero este método sigue siendo útil cuando necesita filtrar una colección mediante programación.
jQuery 1.4 también revela el "contiene
"función bajo el espacio de nombres jQuery. Esta es una función de bajo nivel que acepta dos nodos DOM. Devolverá un valor booleano que indica si el segundo elemento está contenido dentro del primer elemento. E.g.
jQuery.contains (document.documentElement, document.body); // Devuelve true - está dentro
Leer más sobre: .tiene(… )
, jQuery.contains (…)
Hemos tenido el ".envolver()
"Método por un tiempo ahora. jQuery 1.4 agrega el".desenvolver()
"método que hace todo lo contrario. Si asumimos la siguiente estructura DOM:
Foo
Podemos desenvolver el elemento de párrafo así:
jQuery ('p'). unwrap ();
La estructura DOM resultante sería:
Foo
Esencialmente, este método simplemente elimina el padre de cualquier elemento.
Leer más sobre .desenvolver (…)
El nuevo ".despegar()
"el método le permite eliminar elementos del DOM, al igual que el".retirar()
"método. La diferencia clave con este nuevo método es que no destruye los datos almacenados por jQuery en ese elemento. Esto incluye los datos agregados a través de".datos()
"y cualquier controlador de eventos agregado a través del sistema de eventos de jQuery.
Esto puede ser útil cuando necesita eliminar un elemento del DOM, pero sabe que tendrá que volver a agregarlo en una etapa posterior. Sus manejadores de eventos y cualquier otro dato persistirán..
var foo = jQuery ('# foo'); // Enlazar un manejador de eventos importantes foo.click (function () alert ('Foo!');); foo.detach (); // Eliminar de DOM // ... hacer cosas foo.appendTo ('cuerpo'); // Agregarlo de nuevo al DOM foo.click (); // alertas "¡Foo!"
Leer más sobre .separar (…)
jQuery 1.4 te ofrece dos nuevas formas de usar el ".índice()
"método. Anteriormente, solo podía pasar un elemento como argumento y esperaría que se devolviera un número que indicara el índice de ese elemento dentro de la colección actual.
Sin pasar argumentos, ahora devuelve el índice de un elemento entre sus hermanos. Entonces, asumiendo la siguiente estructura DOM:
Cuando se hace clic en un elemento de la lista, desea averiguar el índice del elemento pulsado entre todos los demás elementos de la lista. Es tan simple como:
jQuery ('li'). click (function () alert (jQuery (this) .index ()););
jQuery 1.4 también le permite especificar un selector como el primer argumento para ".índice()
", al hacerlo le dará el índice del elemento actual entre la colección producida desde ese selector.
Debe tener en cuenta que lo que se devuelve de este método es un número entero, y devolverá -1 si el elemento / selector pasado no se encuentra en el documento..
Leer más sobre .índice (…)
La mayoría de los métodos de manipulación de DOM ahora admiten pasar una función como único argumento (o segundo, en el caso de ".css ()
"&".attr ()
"). Esta función se ejecutará en todos los elementos de la colección para determinar qué se debe utilizar como valor real para ese método..
Los siguientes métodos tienen esta capacidad:
Dentro de la función de devolución de llamada, tendrá acceso al elemento actual en la colección a través de "esta
"y su índice a través del primer argumento.
jQuery ('li'). html (function (i) return 'Índice de este elemento de la lista:' + i;);
Además, con algunos de los métodos anteriores también obtendrá un segundo argumento. Si estás llamando a un método setter (como ".html ()
"o".attr ('href)
") tendrás acceso al valor actual. E.g.
jQuery ('a'). attr ('href', function (i, currentHref) return currentHref + '? foo = bar';);
Como puedes ver, con el.css ()
"y".attr ()
"métodos, pasaría la función como segundo argumento, ya que el primero se usaría para nombrar la propiedad que desea cambiar:
jQuery ('li'). css ('color', función (i, currentCssColor) return i% 2? 'red': 'blue';);
jQuery 1.4 agrega dos nuevas funciones de ayuda (almacenadas directamente debajo del espacio de nombres de jQuery) que le ayudan a determinar con qué tipo de objeto está tratando.
Primero, hay "isEmptyObject
", esta función devuelve un valor booleano que indica si el objeto pasado está vacío o no (sin propiedades - directo y heredado). Segundo, hay "isPlainObject
", que devolverá un valor booleano que indica si el objeto pasado es un objeto JavaScript simple, es decir, uno creado mediante""o"
nuevo objeto ()
".
jQuery.isEmptyObject (); // true jQuery.isEmptyObject (foo: 1); // false jQuery.isPlainObject (); // true jQuery.isPlainObject (window); // false jQuery.isPlainObject (jQuery ()); // falso
Leer más sobre: isPlainObject (…)
, isEmptyObject (…)
jQuery ".más cercano ()
"el método ahora acepta una matriz de selectores. Esto es útil cuando quiere recorrer los ancestros de un elemento, buscando (más de uno) elementos más cercanos con ciertas características.
Además, ahora acepta un contexto como segundo argumento, lo que significa que puede controlar hasta qué punto o qué tan cerca quiere que se mueva el DOM. Estas dos mejoras se adaptan a casos de uso poco frecuentes, pero se utilizan internamente con gran efecto!
Leer más sobre .más cercano (…)
Como se mencionó, para delegar los eventos de "enfoque" y "desenfoque", debe usar estos nuevos eventos, llamados "enfoque en" y "enfoque". Estos eventos le permiten actuar cuando un elemento, o un descendiente de un elemento, se enfoca.
jQuery ('form') .focusin (function () jQuery (this) .addClass ('focus');); .focusout (function () jQuery (this) .removeClass ('focus'););
También debe tener en cuenta que estos dos eventos no se propagan ("burbuja"); son capturados Esto significa que el elemento más externo (ancestro) se activará antes que el elemento causal "objetivo".
Lea más sobre el concéntrate en
y enfoque fuera
eventos.
¡Bueno, eso es todo! He tratado de cubrir los cambios que creo que tendrán un impacto en ti!
Si aún no lo has hecho, deberías revisar el14 días de jQuery", un increíble evento en línea que marca el lanzamiento de jQuery 1.4 y el cuarto cumpleaños de jQuery!
Y no te olvides de revisar el nuevo Documentación de la API!
¿Sabía que puede ganar hasta $ 600 por escribir un tutorial PLUS y / o un screencast para nosotros?? Estamos buscando tutoriales detallados y bien escritos sobre HTML, CSS, PHP y JavaScript. Si tiene la habilidad, contacte a Jeffrey en [email protected].
Tenga en cuenta que la compensación real dependerá de la calidad del tutorial final y del screencast.