Capítulo 6: Navegación por el DOM (Traversing)
Una vez que has seleccionado un elemento, frecuentemente necesitas acceder a sus parientes en el árbol: padres, hijos, hermanos. Este capítulo cubre todas las formas de navegar.
6.1. Navegar hacia los padres: parentElement y closest()
parentElement y closest()parentElement
parentElementAccede al padre directo (elemento que contiene el elemento actual).
const parrafo = document.querySelector('p');
const padre = parrafo.parentElement;
console.log(padre.tagName); // Ej: "DIV"
// Subir múltiples niveles
const abuelo = parrafo.parentElement.parentElement;closest(selector)
closest(selector)Sube en la jerarquía hasta encontrar un elemento que coincida con el selector CSS. Es muy útil para "delegación de eventos".
// HTML: <div class="contenedor"> <button class="btn">Haz clic</button> </div>
const boton = document.querySelector('button');
// Encuentra el contenedor más cercano
const contenedor = boton.closest('.contenedor');
console.log(contenedor); // <div class="contenedor">
// Si no encuentra nada, retorna null
const noExiste = boton.closest('.inexistente');
console.log(noExiste); // null
// Puede ser él mismo
const esElMismo = boton.closest('button');
console.log(esElMismo === boton); // true6.2. Navegar hacia los hijos: children, firstElementChild, lastElementChild, childNodes
children, firstElementChild, lastElementChild, childNodeschildren
childrenUna HTMLCollection con todos los elementos hijo (no incluye nodos de texto).
firstElementChild y lastElementChild
firstElementChild y lastElementChildEl primer y último elemento hijo.
childNodes (con nodos de texto)
childNodes (con nodos de texto)Incluye todos los nodos, incluyendo nodos de texto (espacios, saltos de línea).
6.3. Navegar entre hermanos: nextElementSibling, previousElementSibling
nextElementSibling, previousElementSiblingnextElementSibling
nextElementSiblingEl siguiente elemento hermano.
previousElementSibling
previousElementSiblingEl elemento hermano anterior.
Recorrer hermanos
Navegar entre hermanos es útil para lógica que necesita comparar o acceder a elementos relacionados.
6.4. Diferencia entre Elementos y Nodos (texto/comentarios)
Este es un punto crítico que causa confusión:
Nodos (nodeType): Incluyen elementos, texto, comentarios, todo.
Elementos (Element): Solo etiquetas HTML.
6.5. Patrón práctico: Recorrer un árbol recursivamente
Buscar elementos profundamente anidados:
Resumen del Capítulo
La navegación por el DOM es esencial para construir lógica que manipule múltiples elementos relacionados. Recuerda preferir .children (elementos) sobre .childNodes (todos los nodos) en la mayoría de casos, y usa closest() para subir en la jerarquía de forma elegante.
💡 Conceptos Clave:
parentElement: Acceder al contenedor directo
closest(selector): Subir hasta encontrar coincidencia
children: Todos los elementos hijo (HTMLCollection)
firstElementChild, lastElementChild: Primer/último hijo
nextElementSibling, previousElementSibling: Hermanos
childNodes vs children: Nodos (incluyendo texto) vs solo elementos
Navegación: Forma de recorrer relaciones en el árbol
Recorrido recursivo: Para búsquedas profundas
🤔 Preguntas de Reflexión:
¿Cuál es la diferencia entre
parentElementyclosest()?¿Qué retorna
nextElementSiblingsi no hay siguiente?¿Por qué
.childrensuele ser preferible a.childNodes?¿Cómo usarías
closest()dentro de un event listener?¿Cómo recorrerías todos los elementos hermanos de un nodo?
Crea una función que suba al antecesor más cercano con clase 'card'.
Última actualización
¿Te fue útil?