Command Palette

Search for a command to run...

matches(): Verificación de Selectores CSS

Aprende a usar el método matches() para verificar si un elemento coincide con un selector CSS específico.

Lectura: 9 min
Nivel: Principiante

TL;DR - Resumen rápido

  • matches() verifica si un elemento coincide con un selector CSS
  • Retorna true si hay coincidencia, false si no
  • Es más eficiente que querySelector para verificar un solo elemento
  • Acepta cualquier selector CSS válido
  • Útil para validación de elementos y delegación de eventos

Introducción a matches()

El método matches() es una herramienta útil para verificar si un elemento del DOM coincide con un selector CSS específico. A diferencia dequerySelector() que busca elementos, matches() solo verifica si el elemento actual cumple con las condiciones del selector.

Este método es especialmente útil cuando trabajas con delegación de eventos o necesitas validar elementos antes de realizar operaciones sobre ellos. Es más eficiente que usar querySelector() porque no necesita buscar en todo el DOM.

¿Por qué usar matches()?

matches() es ideal para verificar condiciones en elementos que ya tienes. En lugar de buscar elementos con querySelector() y luego verificar si es el correcto, puedes usar matches() directamente sobre el elemento, lo que es más eficiente y legible.

Sintaxis Básica

La sintaxis de matches() es simple: recibe un selector CSS como parámetro y retorna true si el elemento coincide con ese selector, o false si no coincide.

matches-basico.js
Loading code...

Este ejemplo muestra cómo matches() verifica si un elemento coincide con diferentes selectores CSS. El método retorna un booleano que indica si hay coincidencia.

matches() lanza error con selector inválido

Si pasas un selector CSS inválido a matches(), se lanzará una excepción SyntaxError. Siempre valida tus selectores o usa try-catch para manejar posibles excepciones.

Verificación con Selectores

matches() acepta cualquier selector CSS válido, lo que te da mucha flexibilidad en tus verificaciones. Puedes verificar por clase, ID, atributo, pseudo-clases o combinaciones complejas de selectores.

Verificación por Clase

Verificar por clase es uno de los usos más comunes de matches(). Es útil para validar que un elemento tiene las clases esperadas.

matches-clase.js
Loading code...

Este ejemplo muestra cómo verificar si un elemento tiene clases específicas. Este patrón es muy común en validación de elementos y delegación de eventos.

Verificación por Atributo

También puedes verificar elementos por atributos usando selectores de atributo CSS. Esto es útil para elementos con atributos de datos o atributos personalizados.

matches-atributo.js
Loading code...

Este ejemplo muestra cómo verificar elementos por atributos. Los selectores de atributo son muy flexibles y te permiten verificar cualquier atributo del elemento.

Verificación con Pseudo-clases

matches() también funciona con pseudo-clases CSS, lo que te permite verificar el estado de un elemento como :hover, :focus,:checked, entre otros.

matches-pseudo-clases.js
Loading code...

Este ejemplo muestra cómo verificar pseudo-clases con matches(). Ten en cuenta que algunas pseudo-clases dependen del estado actual del elemento.

Casos de Uso Prácticos

matches() tiene muchas aplicaciones prácticas en el desarrollo web. Aquí exploraremos algunos escenarios comunes donde este método es la mejor solución.

Delegación de Eventos

La delegación de eventos es un patrón donde usas matches() para identificar qué tipo de elemento fue el objetivo de un evento.

matches-delegacion-eventos.js
Loading code...

Este ejemplo muestra cómo usar matches() en delegación de eventos. Este patrón es muy eficiente porque solo necesitas un event listener para múltiples elementos.

matches() vs closest() en delegación

En delegación de eventos, usa matches() cuando el objetivo es el propio elemento, y closest() cuando necesitas encontrar un ancestro. Ambos métodos complementan la delegación de eventos.

Validación de Elementos

matches() es ideal para validar que un elemento cumple con ciertas condiciones antes de realizar operaciones sobre él.

matches-validacion.js
Loading code...

Este ejemplo muestra cómo validar elementos antes de procesarlos.matches() te permite escribir condiciones más legibles y mantenibles.

Errores Comunes

Al trabajar con matches(), hay varios errores que los desarrolladores cometen frecuentemente. Conocer estos errores te ayudará a evitarlos y escribir código más robusto.

Selector CSS Inválido

El error más común es pasar un selector CSS inválido a matches(). Esto lanzará una excepción y detendrá la ejecución de tu código.

error-selector-invalido.js
Loading code...

Este ejemplo muestra cómo manejar selectores inválidos. Siempre valida tus selectores o usa try-catch para manejar posibles excepciones.

Confundir con querySelector

Otro error común es confundir matches() conquerySelector(). matches() verifica el elemento actual, mientras que querySelector() busca en el DOM.

error-confundir-queryselector.js
Loading code...

Este ejemplo muestra la diferencia entre matches() yquerySelector(). Usa matches() cuando ya tienes el elemento y querySelector() cuando necesitas buscarlo.

  • <strong>matches()</strong>: Verifica si el elemento actual coincide con el selector
  • <strong>querySelector()</strong>: Busca el primer elemento que coincida en el DOM
  • <strong>matches()</strong>: Más eficiente para elementos que ya tienes
  • <strong>querySelector()</strong>: Necesario cuando no tienes el elemento
  • <strong>Uso</strong>: Usa matches() para validación, querySelector() para búsqueda

Resumen: Método matches()

Conceptos principales:

  • matches() verifica si un elemento coincide con un selector CSS
  • Retorna true si hay coincidencia, false si no
  • Acepta cualquier selector CSS válido
  • Es más eficiente que querySelector para verificación
  • Funciona con pseudo-clases y selectores complejos

Mejores prácticas:

  • Usa matches() para validar elementos antes de procesarlos
  • Usa matches() en delegación de eventos para identificar objetivos
  • Valida selectores que provienen de entrada del usuario
  • Usa try-catch para selectores dinámicos que pueden ser inválidos
  • Combina matches() con closest() para navegación y verificación