blob: eef4ae271d33b0c0c14de59891eeb9223eca149b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
---
title: Element.matches()
slug: Web/API/Element/matches
tags:
- API
- DOM
- Elemento
- Referencia
- metodo
- msMatchesSelector
- webkitMatchesSelector
translation_of: Web/API/Element/matches
---
<div>{{APIRef("DOM")}}</div>
<p>El método <strong><code>matches()</code></strong> comprueba si el {{domxref("Element")}} sería seleccionable por el selector CSS especificado en la cadena; en caso contrario, retorna <code>false</code>.</p>
<h2 id="Sintaxis">Sintaxis</h2>
<pre class="syntaxbox notranslate">var <var>result</var> = <var>element</var>.matches(<var>selectorString</var>);
</pre>
<h3 id="Parámetros">Parámetros</h3>
<p><code><var>selectorString</var></code> es una cadena de texto que representa el selector a probar.</p>
<h3 id="Valor_devuelto">Valor devuelto</h3>
<p><code><var>result</var></code> es un {{domxref("Boolean")}}.</p>
<h3 id="Excepciones">Excepciones</h3>
<dl>
<dt><code>SYNTAX_ERR</code></dt>
<dd>La cadena especificada como selector no es válida.</dd>
</dl>
<h2 id="Ejemplo">Ejemplo</h2>
<pre class="brush: html notranslate"><ul id="aves">
<li>Loro de alas naranja</li>
<li class="amenazada">Ágila Filipina</li>
<li>Gran Pelícano Blancpo/li>
</ul>
<script type="text/javascript">
var aves = document.getElementsByTagName('li');
for (var i = 0; i < aves.length; i++) {
if (aves[i].matches('.amenazada')) {
console.log('El ' + aves[i].textContent + ' está amenazada de extinción!');
}
}
</script>
</pre>
<p>Esto mostrará "El Águila Filipina está amenazada de extinción!" en el log de la consola, dado que el elemento tiene un atributo <code>class</code> con valor <code>amenazada</code>.</p>
<h2 id="Polyfill">Polyfill</h2>
<p>Para navegadores que no soportan <code>Element.matches()</code> o <code>Element.matchesSelector()</code>, pero aun incorporan soporte para <code>document.querySelectorAll()</code>, existe un polyfill:</p>
<pre class="notranslate">if (!Element.prototype.matches) {
Element.prototype.matches =
Element.prototype.matchesSelector ||
Element.prototype.mozMatchesSelector ||
Element.prototype.msMatchesSelector ||
Element.prototype.oMatchesSelector ||
Element.prototype.webkitMatchesSelector ||
function(s) {
var matches = (this.document || this.ownerDocument).querySelectorAll(s),
i = matches.length;
while (--i >= 0 && matches.item(i) !== this) {}
return i > -1;
};
}</pre>
<p>However, given the practicality of supporting older browsers, the following should suffice for most (if not all) practical cases (ej. soporte IE9+).</p>
<pre class="brush: js notranslate">if (!Element.prototype.matches) {
Element.prototype.matches = Element.prototype.msMatchesSelector ||
Element.prototype.webkitMatchesSelector;
}
</pre>
<h2 id="Especificación">Especificación</h2>
<table class="standard-table">
<thead>
<tr>
<th scope="col">Especificación</th>
<th scope="col">Estado</th>
<th scope="col">Observaciones</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{SpecName('DOM WHATWG', '#dom-element-matches', 'Element.prototype.matches')}}</td>
<td>{{Spec2('DOM WHATWG')}}</td>
<td>Definición Inicial</td>
</tr>
</tbody>
</table>
<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2>
<p>{{Compat("api.Element.matches")}}</p>
<h2 id="Ver_también">Ver también</h2>
<ul>
<li>
<div class="syntaxbox"><a href="/en-US/docs/Web/Guide/CSS/Getting_started/Selectors">The syntax of Selectors</a></div>
</li>
<li>
<div class="syntaxbox">Otros métodos que usan selectores: {{domxref("element.querySelector()")}} and {{domxref("element.closest()")}}.</div>
</li>
</ul>
|