javascript - Element.matches 选择器限制

标签 javascript html

我正在尝试使用 Element.matches使用复杂的选择器,但我收到错误:

Uncaught DOMException: Failed to execute 'matches' on 'Element': ':not(.myContainer *)' is not a valid selector.

var myMatchedElement = document.getElementById('iShould');
console.log(myMatchedElement.matches(':not(.myContainer *)'));

var myNotMatchedElement = document.getElementById('iShouldNot');
console.log(myNotMatchedElement.matches(':not(.myContainer *)'));
<div id="app">
  <div id="iShould">I should match the selector</div>
  <div class="myContainer">
    <span id="iShouldNot">I should not</span>
  </div>
</div>

这是选择器的简化版本,但基本上我需要“:not(.class childs)”并使用 Element.matches。

最佳答案

:not()仍然只接受simple selectors , .myContainer *complex selector而不是一个简单的选择器。

即使 CSS 也不会接受你的规则。

:not(.myContainer *) {
  color: green;
}
<div id="app">
  <div id="iShould">I should match the selector</div>
  <div class="myContainer">
    <span id="iShouldNot">I should not</span>
  </div>
</div>

请注意Selectors 4现在扩展 not() 函数以接受复杂选择器列表,但只有 Safari 实现了它。

关于javascript - Element.matches 选择器限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61242926/

相关文章:

javascript - 当 ".value = ***"似乎无法识别时,如何使用 JS 填写简单的输入字段?

javascript - jquery live 会以 $ ('#somebutton' ).data ('events' ).click 工作吗?

javascript - Zepto.js 中有类似 nextAll() 的东西吗?

javascript - 单击按钮时如何使页面滚动到特定元素?滚动动画,如果可能的话

javascript - Onload 删除单选按钮值

javascript - 使用 javascript 填充输入值

javascript - 如何在 HTML 网站中启用旋转 slider 自动播放

javascript - 如何从 AngularJS Controller 逻辑内部更改 HTML 元素的 CSS 类

html - 谷歌浏览器扩展覆盖!重要

javascript - Jquery - 具有相同类但不同 ID 的多个元素使用相同的函数但结果不同