This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.
The matches() method of the Element interface tests whether the element would be selected by the specified CSS selector.
matches(selectors)
selectorsA string containing valid CSS selectors to test the Element against.
true if the Element matches the selectors. Otherwise, false.
SyntaxError DOMException
Thrown if selectors cannot be parsed as a CSS selector list.
<ul id="birds"> <li>Orange-winged parrot</li> <li class="endangered">Philippine eagle</li> <li>Great white pelican</li> </ul>
const birds = document.querySelectorAll("li");
for (const bird of birds) {
if (bird.matches(".endangered")) {
console.log(`The ${bird.textContent} is endangered!`);
}
}
This will log "The Philippine eagle is endangered!" to the console, since the element has indeed a class attribute with value endangered.
| Specification |
|---|
| DOM> # ref-for-dom-element-matches①> |
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
matches |
334 | 151212–79 | 34443.6["Before Firefox 4, invalid selector strings caused false to be returned instead of throwing an exception.", "See bug 1119718 for removal."] |
211511.5–15 | 85 | 3318 | 34444See bug 1119718 for removal. |
211411.5–14 | 84.2 | 2.01.0 | 4.4.34.4 | 84.2 |
Element methods that take selectors: Element.querySelector(), Element.querySelectorAll(), and element.closest().
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Element/matches