【问题标题】:document.querySelectorAll with conditions inside ":not" not working [duplicate]document.querySelectorAll 在“:not”中的条件不起作用[重复]
【发布时间】: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


【解决方案1】:

试试这个

document.querySelectorAll("#someID:not(.classNameOne) > 
div, .classNameTwo > div, div[class*=-something] > div ");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    相关资源
    最近更新 更多