10 funciones de desplazamiento realmente útiles en jQuery

Con jQuery, seleccionar elementos HTML es ridículamente fácil. Pero a veces, podemos desear refinar aún más la selección, lo que puede ser una molestia cuando la estructura HTML es complicada. En este tutorial, exploraremos diez maneras en que podemos refinar y extender un conjunto de elementos envueltos que deseamos operar.

El HTML

En primer lugar, echemos un vistazo a la página web simple que se muestra en la siguiente figura. Estaremos seleccionando elementos en él a lo largo de este tutorial..

  1. div.container es el elemento de envoltura.
  2. div.photo, div.title y div.rating son hijos inmediatos de div.container.
  3. Cada div.star es un niño de div.rating.
  4. Cuando un div.star tiene la clase 'on', es una estrella completa.

Por qué atravesar?

Pero, ¿por qué necesitamos refinar más un conjunto de elementos? ¿No es la sintaxis de selección de jQuery lo suficientemente poderosa??

Bueno, veamos un ejemplo. En la página web mencionada anteriormente, cuando se hace clic en una estrella, es posible que deseamos agregar la clase 'on' a esta estrella y todas las estrellas a la izquierda. Y podemos querer cambiar el color de fondo del div padre de las estrellas. Así que tenemos el siguiente código.

 $ ('. star'). click (function () $ (this) .addClass ('on'); // ¿Cómo seleccionar el div principal de 'this'? // Cómo seleccionar las estrellas al lado izquierdo de 'esta'? );

En la Línea 2, seleccionamos la estrella que se hace clic con 'esta'. Pero, ¿cómo seleccionamos el div padre de las estrellas? Sí, es div.rating. Pero puede haber una docena más div.ratings en una página, ¿verdad? Entonces, ¿cuál es el que queremos? ¿Y cómo seleccionamos todas las estrellas a la izquierda de 'esta'?

Afortunadamente, jQuery nos permite obtener nuevos conjuntos envueltos de un conjunto existente, en función de las relaciones jerárquicas. Y esto es en parte lo que hacen las funciones de desplazamiento..

1. niños

Esta función consigue los hijos inmediatos de un conjunto de elementos..

Esto puede ser muy útil en una variedad de situaciones. Mira la figura de abajo:

  • El contenedor de las estrellas se selecciona inicialmente..
  • Se pasa una expresión de selección a children () para limitar el resultado a solo las estrellas completas.
  • Si children () no recibe parámetros, se devolverán todos los hijos inmediatos..
  • No se devolverán nietos. Lo siento.

2. filtro

Esta función filtra los elementos del conjunto envuelto utilizando una expresión de selector pasada. Cualquier elemento que no coincida con la expresión será eliminado de la selección.

El siguiente ejemplo debería ser bastante sencillo. Las estrellas completas se filtran de una colección de las cinco estrellas.

3. no

Todo lo contrario de filter (), not () elimina los elementos coincidentes del conjunto envuelto.

Vea el ejemplo a continuación. Incluso las estrellas se eliminan de la selección, dejando solo las impares..

¡Darse cuenta! Los selectores "par" e "impar" tienen indexación cero. Cuentan índice desde 0, NO 1.

4. agregar

¿Qué pasa si queremos agregar algunos elementos al conjunto envuelto? La función add () hace esto.

De nuevo, muy sencillo. La casilla de fotos se añade a la selección..

5. rebanada

A veces es posible que deseamos obtener un subconjunto del conjunto envuelto, según la posición de los elementos dentro del conjunto. Y slice () es el camino a seguir..

  • El primer parámetro es la posición basada en cero del primer elemento que se incluirá en el sector devuelto.
  • El segundo parámetro es el índice de base cero del primer elemento que NO se incluirá en el sector devuelto. Si se omite, la división se extiende hasta el final del conjunto.
  • Asi que rebanada (0, 2) selecciona las dos primeras estrellas.

6. padre

La función padre () selecciona el padre directo de un conjunto de elementos.

Como se muestra en la siguiente figura, se selecciona el padre directo de la primera estrella. Muy práctico, ¿eh? Cabe señalar que solo se devolverá el padre directo, por lo que es singular. No se seleccionarán abuelos ni antepasados..

7. padres

¡Este es plural! La función parents () selecciona todos los ancestros de un conjunto de elementos. Me refiero a TODOS los ancestros del padre directo hasta 'cuerpo'y'html'. Así que es mejor pasar una expresión de selección para reducir el resultado.

Al pasar.envasea los padres (), div.container, Que en realidad es el abuelo de la primera estrella, es seleccionado..

8. hermanos

Esta función selecciona a todos los hermanos (hermanos y hermanas) de un conjunto de elementos. Se puede pasar una expresión para filtrar el resultado..

Mira el ejemplo:

  • ¿Quiénes son los hermanos de la primera estrella? Las otras cuatro estrellas, a la derecha.?
  • Los hermanos "impares" se seleccionan como se muestra. De nuevo, el índice está basado en cero. Mira los números rojos debajo de las estrellas..

9. prev & prevAll

La función prev () selecciona el hermano anterior (uno), y prevAll () selecciona todos los hermanos anteriores de un conjunto de elementos.

Esto es muy útil si estás creando un widget de calificación de estrellas. Los hermanos anteriores de la tercera estrella son seleccionados..

10. next & nextAll

Estas funciones funcionan de la misma manera que prev y prevAll, excepto que seleccionan los hermanos NEXT.

Conclusión

Por fin, veamos cómo estas funciones nos resuelven un dolor de cabeza real..

 $ ('. star'). click (function () $ (this) .addClass ('on'); // ¿Cómo seleccionar el div padre de 'this'? $ (this) .parent (). addClass ( 'rated'); // Cómo seleccionar estrellas en el lado izquierdo de 'this'? $ (this) .prevAll (). addClass ('on'); $ (this) .nextAll (). removeClass ('on' ););

Este es el problema que mencionamos al principio de este tutorial, ¿verdad? En estas líneas de código se utilizan varias funciones de desplazamiento..

  • En la línea 5, observe el uso de parent (). Fácil, ja?
  • En la línea 8 y 9, prevAll () y nextAll () seleccionan las futuras estrellas completas y las estrellas vacías.

Ahora, tenemos una idea de lo útiles que pueden ser las funciones de desplazamiento. Pueden ser incluso más poderosos cuando se usan juntos. La salida de una función puede ser la entrada de otra, es decir, son imposibles de manejar..

¡Gracias por leer! Esperemos que este tutorial haga su vida un poco más fácil al seleccionar elementos HTML con jQuery. ¿Alguna idea? ¿Qué funciones de desplazamiento nos perdimos??

  • Síganos en Twitter o suscríbase a Nettuts + RSS Feed para obtener más artículos y artículos de desarrollo web diarios..