--- title: Element.matches() slug: Web/API/Element/matches tags: - Element.matches() - js-30-days - matches() translation_of: Web/API/Element/matches ---
{{APIRef("DOM")}}
如果元素被指定的选择器字符串选择,Element.matches()
方法返回true; 否则返回false。
有一些浏览器使用前缀, 在非标准名称 matchesSelector () 下实现了这个方法!
let result = element.matches(selectorString);
result
的值为 true
或 false
.selectorString
是个css选择器字符串.<ul id="birds">
<li>Orange-winged parrot</li>
<li class="endangered">Philippine eagle</li>
<li>Great white pelican</li>
</ul>
<script type="text/javascript">
var birds = document.getElementsByTagName('li');
for (var i = 0; i < birds.length; i++) {
if (birds[i].matches('.endangered')) {
console.log('The ' + birds[i].textContent + ' is endangered!');
}
}
</script>
<div id="foo">This is the element!</div> <script type="text/javascript"> var el = document.getElementById("foo"); if (el.mozMatchesSelector("div")) { alert("Match!"); } </script>
会显示弹出框,因为"div"选择器可以选择到el元素.
SYNTAX_ERR
{{ gecko_minversion_inline("2.0") }}false,2.0之后
,会直接抛出异常.对于不支持 Element.matches()
或Element.matchesSelector(),但支持
document.querySelectorAll()方法的浏览器,存在以下替代方案
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; }; }
关于Polyfill的补充:
Specification | Status | Comment |
---|---|---|
{{SpecName('Selectors API Level 2', '#matches', 'Element.matches')}} | {{Spec2('Selectors API Level 2')}} | Initial definition. |
{{Compat("api.Element.matches")}}