Manipulación del DOM

Selección de elementos

Esta es una de las funciones más poderosas de jQuery, porque te permite manipular precisamente aquellos elementos de tu página web que necesitas modificar, interactuar o animar. 

¿Qué es la Selección de Elementos?

En jQuery, seleccionar un elemento es como usar un control remoto para enfocar un dispositivo específico en tu sala de estar. Imagina que cada botón del control remoto está diseñado para interactuar con un dispositivo: uno para la televisión, otro para el reproductor de DVD, otro para la barra de sonido, etc. En jQuery, los «botones» son los selectores que te permiten enfocar y manipular los elementos HTML de tu página web.

Tipos de Selectores en jQuery

jQuery utiliza la sintaxis de selectores de CSS, lo que hace que sea muy intuitivo para quienes ya están familiarizados con CSS. Aquí hay algunos tipos básicos de selectores que puedes utilizar:

  1. Selector de ID: Usa el ID de un elemento para seleccionarlo. Es como seleccionar un dispositivo por su nombre único.

				
					$('#miId'); // Selecciona el elemento que tiene el ID "miId"

				
			

2. Selector de Clase: Permite seleccionar todos los elementos que comparten una misma clase. Es como seleccionar todos los dispositivos de una misma marca.

				
					$('.miClase'); // Selecciona todos los elementos con la clase "miClase"

				
			

3. Selector de Etiqueta: Selecciona todos los elementos de una determinada etiqueta HTML, como todos los párrafos o todas las imágenes.

				
					$('p'); // Selecciona todos los elementos <p>

				
			

4. Selector de Atributo: Selecciona elementos basados en un atributo y su valor.

				
					$('[href]'); // Selecciona todos los elementos que tienen un atributo "href"
$('a[target="_blank"]'); // Selecciona todos los enlaces que abren en una nueva ventana

				
			

5. Combinaciones y Filtros: Puedes combinar varios selectores para afinar tu selección, o usar filtros para seleccionar elementos específicos dentro de un grupo.

				
					$('div .miClase'); // Selecciona elementos con la clase "miClase" dentro de <div>
$('ul li:first-child'); // Selecciona el primer elemento <li> de cada <ul>

				
			

Práctica

Para poner en práctica estos conceptos, intenta usar diferentes selectores para manipular varios elementos en tu propia página web. Observa cómo cambian los elementos y cómo puedes controlar de manera precisa lo que quieres modificar.

Selección de elementos

En jQuery, modificar el contenido y los atributos de los elementos HTML es como tener un control remoto que no solo selecciona los dispositivos en tu sala, sino que también ajusta sus configuraciones específicas, como el volumen o el canal. Vamos a aprender cómo usar jQuery para hacer estos ajustes en tu página web de manera eficiente.

Modificar Contenido

jQuery ofrece varias funciones para cambiar el contenido dentro de los elementos seleccionados. Estas funciones son .text(), .html(), y .val().

  • .text(): Cambia o retorna el texto plano de los elementos seleccionados.
  • .html(): Cambia o retorna el contenido HTML de los elementos seleccionados.
  • .val(): Cambia o retorna el valor de los elementos de formulario, como input, select o textarea.

Modificar Atributos

Para modificar los atributos de los elementos, como src en una imagen o href en un enlace, jQuery proporciona métodos como .attr(), .removeAttr(), y .prop().

  • .attr(): Cambia o retorna el valor de un atributo.
  • .removeAttr(): Elimina un atributo.
  • .prop(): Usado principalmente para propiedades como checked, selected, o disabled.

Ejemplos de Código

A continuación, veremos cómo usar estas funciones para realizar tareas comunes en una sola sección de código comentado:

				
					$(document).ready(function() {
    // Cambiar el texto de todos los párrafos
    $('p').text('Nuevo texto para todos los párrafos.');

    // Cambiar el HTML del primer div; añadir un botón
    $('div:first').html('<button>Click me!</button>');

    // Cambiar el valor de un input
    $('#miInput').val('Texto predeterminado');

    // Actualizar el atributo href de todos los enlaces para abrir en una nueva pestaña
    $('a').attr('href', 'https://www.example.com').attr('target', '_blank');

    // Remover el atributo 'title' de las imágenes
    $('img').removeAttr('title');

    // Marcar un checkbox como seleccionado
    $('#miCheckbox').prop('checked', true);
});

				
			

Explicación del Código

  1. .text() se usa para cambiar el texto de todos los párrafos (<p>) a «Nuevo texto para todos los párrafos».
  2. .html() modifica el primer <div> para incluir un botón HTML dentro de él.
  3. .val() establece un valor predeterminado para un campo de entrada con ID miInput.
  4. .attr() se encadena para actualizar el atributo href de todos los enlaces (<a>) y asegurarse de que se abren en una nueva pestaña con target='_blank'.
  5. .removeAttr() elimina el atributo title de todas las imágenes (<img>), que podría usarse para descripciones emergentes que ya no son necesarias.
  6. .prop() establece la propiedad checked del checkbox con ID miCheckbox a true, marcándolo automáticamente.

Insertar y remover elementos

Insertar Elementos

En jQuery, puedes usar varios métodos para insertar nuevos elementos en el DOM (Document Object Model). Estos métodos incluyen .append(), .prepend(), .before(), y .after().

  • .append(): Inserta contenido al final de los elementos seleccionados.
  • .prepend(): Inserta contenido al principio de los elementos seleccionados.
  • .before(): Inserta contenido justo antes de los elementos seleccionados.
  • .after(): Inserta contenido justo después de los elementos seleccionados.

Remover Elementos

Para remover elementos, jQuery ofrece métodos como .remove() y .empty().

  • .remove(): Elimina los elementos seleccionados del DOM junto con sus eventos y datos asociados.
  • .empty(): Elimina todo el contenido dentro de los elementos seleccionados, pero no los elementos en sí.

Ejemplos de Código

Aquí tienes un bloque de código donde se demuestran varias de estas operaciones, con comentarios para explicar cada acción:

				
					$(document).ready(function() {
    // Añadir un nuevo ítem al final de cada lista
    $('ul').append('<li>Nuevo ítem al final</li>');

    // Añadir un nuevo ítem al principio de cada lista
    $('ul').prepend('<li>Nuevo ítem al principio</li>');

    // Insertar un párrafo antes del primer div
    $('div:first').before('<p>Párrafo insertado antes del primer div</p>');

    // Insertar un párrafo después del primer div
    $('div:first').after('<p>Párrafo insertado después del primer div</p>');

    // Remover todos los elementos con la clase 'remover'
    $('.remover').remove();

    // Vaciar el contenido del último div
    $('div:last').empty();
});

				
			

Detalles del Código

  1. .append() y .prepend() son utilizados aquí para insertar nuevos ítems <li> al principio y al final de todas las listas <ul>.
  2. .before() y .after() se utilizan para insertar nuevos párrafos antes y después del primer <div> de la página.
  3. .remove() elimina todos los elementos que tienen la clase remover, lo que es útil para limpiar elementos que ya no son necesarios en la página.
  4. .empty() se usa para eliminar todo el contenido dentro del último <div>, dejando el contenedor vacío pero en el DOM.

Estos métodos te permiten manejar dinámicamente los elementos en tu página, ya sea añadiendo contenido nuevo donde lo necesites o eliminando elementos que ya no son útiles. Con jQuery, estas tareas son mucho más simples y menos propensas a errores que manipular directamente el DOM con JavaScript puro.

Trabajar con CSS mediante jQuery

Cambiar Estilos con jQuery

jQuery te permite cambiar directamente los estilos CSS de un elemento usando el método .css(). Puedes usar este método de dos maneras:

  1. Cambiar un solo estilo: Pasas dos argumentos al método, la propiedad CSS que quieres cambiar y el valor que quieres aplicar.
  2. Cambiar múltiples estilos: Pasas un objeto con pares de propiedades y valores.

Añadir o Quitar Clases

Además de cambiar estilos individuales, jQuery ofrece métodos para manejar clases CSS:

  • .addClass(): Añade una o más clases a los elementos seleccionados.
  • .removeClass(): Elimina una o más clases de los elementos seleccionados.
  • .toggleClass(): Añade la clase si el elemento no la tiene, o la elimina si el elemento ya la posee.

Ejemplo de Código

Aquí te muestro cómo puedes usar estos métodos para manipular el CSS de elementos en tu página, con todos los detalles en los comentarios del código:

				
					$(document).ready(function() {
    // Cambiar el color y la fuente del texto de todos los párrafos
    $('p').css({
        'color': 'red',
        'font-size': '16px'
    });

    // Añadir la clase 'destacado' a todos los elementos con clase 'importante'
    $('.importante').addClass('destacado');

    // Remover la clase 'viejo' de todos los elementos que la tengan
    $('.viejo').removeClass('viejo');

    // Alternar la clase 'activo' al hacer clic en cualquier elemento con clase 'toggle'
    $('.toggle').click(function() {
        $(this).toggleClass('activo');
    });
});

				
			

Detalles del Código

  1. .css() con objeto: Cambia el color y tamaño de fuente de todos los párrafos. Pasar un objeto permite cambiar múltiples estilos a la vez.
  2. .addClass(): Añade la clase destacado a todos los elementos que ya tienen la clase importante. Esto puede ser útil para cambiar la apariencia durante diferentes estados de una aplicación.
  3. .removeClass(): Elimina la clase viejo de todos los elementos que la posean, lo cual es útil para limpiar estilos que ya no son necesarios.
  4. .toggleClass() en un evento click: Añade o elimina la clase activo de los elementos con clase toggle cada vez que son clickeados, lo cual es perfecto para elementos de interfaz como menús desplegables o botones que cambian de estado.