【发布时间】:2019-06-16 22:00:13
【问题描述】:
我尝试用原生方式替换 jQuery 的 .not() 函数,不幸的是我的用例 document.querySelectorAll 不起作用。
这就是我想要实现的——将 jQuery 选择器更改为 vanilla JS:
$('#someID').not('.classNameOne > div, .classNameTwo > div, div[class*="-something"] > div')
我尝试的是使用简单明了的这个选择器:
document.querySelectorAll("#someID:not(.classNameOne > div, .classNameTwo > div, div[class*="-something"] > div)");
这会引发此错误:
Uncaught DOMException: Failed to execute 'querySelectorAll' on 'Document': '#someID:not(.classNameOne > div, .classNameTwo > div, div[class*="-something"] > div)' is not a valid selector.
at <anonymous>:1:10
你们中有人知道替换这个 jQuery 函数的更好方法吗?
谢谢!
【问题讨论】:
-
not() 只允许 simple 选择器.. 你不能把那个复杂的选择器放在里面,仍然不支持 (developer.mozilla.org/en-US/docs/Web/CSS/:not)
-
“这就是我想要实现的目标:[…]” - 请对您的实际需求给出适当的口头描述,而不是只是显示不工作的代码。
-
我相信原始的 jQuery 代码通过检查他们的父母来过滤元素。由于以非常糟糕的方式影响性能,因此 CSS 不支持它
标签: javascript html css css-selectors