Javascript 具有querySelectorAll的选择器无效:不具有子体

Javascript 具有querySelectorAll的选择器无效:不具有子体,javascript,css-selectors,selectors-api,Javascript,Css Selectors,Selectors Api,我有一个例子,我需要在一个页面上选择不同的节点组,并且我需要排除某些子元素。我最常见的任务是选择所有元素,但不选择某些元素的后代 以我的小提琴为例: 我有两个s,每个里面都有一个。我想选择所有图像,但不选择其中一个中的图像(都具有不同的类) 为此,在jQuery和Sizzlejs中,我可以使用类似img:not(.amazingDiv img)的选择器。据我所知,这将选择所有元素,这些元素不是s的后代,它们的类包含amazingDiv。正如我所说,对于支持更详细的:不是语法的库,这非常有效,但由

我有一个例子,我需要在一个页面上选择不同的节点组,并且我需要排除某些子元素。我最常见的任务是选择所有
元素,但不选择某些元素的后代

以我的小提琴为例: 我有两个
s,每个里面都有一个
。我想选择所有图像,但不选择其中一个
中的图像(都具有不同的类)

为此,在jQuery和Sizzlejs中,我可以使用类似
img:not(.amazingDiv img)
的选择器。据我所知,这将选择所有
元素,这些元素不是
s的后代,它们的类包含
amazingDiv
。正如我所说,对于支持更详细的
:不是
语法的库,这非常有效,但由于
querySelectorAll
中出现错误而失败:

Uncaught语法错误:未能对“文档”执行“querySelectorAll”:“img:not(.amazingDiv img)”不是有效的选择器。

我真的希望避免对我收集的元素进行任何“后处理”,那么有没有办法通过使用
querySelectorAll
来实现我想要的呢?(我也尝试过使用库,“micro selector”和“nut”)


编辑:由于我搜索选择器组合以支持某些复杂的
:not
功能没有结果,我选择使用第三方选择器引擎-Jaguar(github.com/alpha123/Jaguar)。这不是个好主意,而且速度较慢,但最终结果可能更有效,因为我不需要“后处理”我的结果。

根据规格,您使用的选择器不正确:

第3级选择器在:not()伪类中只允许一个选择器

,是采用 简单选择器(不包括否定伪类本身)作为 论点它表示的元素不是由其 争论


根据规格,您使用的选择器不正确:

第3级选择器在:not()伪类中只允许一个选择器

,是采用 简单选择器(不包括否定伪类本身)作为 论点它表示的元素不是由其 争论


不幸的是,目前使用标准CSS选择器不可能实现您所期望的操作。目前,它的使用非常有限

在即将到来的标准中,将其功能与选择器库所提供的功能相一致。这意味着,一旦浏览器着手实现增强功能,您所使用的最终将是一个有效的选择器


但同时,假设您不能使用不使用
:not()
的其他选择器来选择所需的元素,那么如果不选择所有
img
元素并分别排除
。amazingDiv img
(在这些元素上称为“后处理”),您将无法执行此操作。

不幸的是,目前,使用标准CSS选择器无法实现您所期望的操作。目前,它的使用非常有限

在即将到来的标准中,将其功能与选择器库所提供的功能相一致。这意味着,一旦浏览器着手实现增强功能,您所使用的最终将是一个有效的选择器


但同时,假设您不能使用不使用
:not()
的其他选择器来选择所需的元素,那么如果不选择所有
img
元素并分别排除
.amazingDiv img
,您将无法执行此操作(称为对这些元素的“后处理”).

如果忽略div本身,则该div下的所有图像将自动被丢弃

document.querySelectorAll("#parent div:not(.amazingDiv2) img")

如果忽略div本身,则该div下的所有图像都将自动丢弃

document.querySelectorAll("#parent div:not(.amazingDiv2) img")

我希望情况不是这样。。。与常规函数不同的是,似乎没有任何简单的多填充方法:(如@Vijay comment为什么不使用
var elements=document.queryselectoral(“.amazingDiv img”);
?我希望情况并非如此……与常规函数不同的是,似乎没有任何简单的多填充方法:(如@Vijay comment为什么不使用
var elements=document.queryselectoral(“.amazingDiv img”);
?当您可以选择一个积极的条件时,为什么要选择一个消极的条件。
document.queryselectoral(.amazingDiv img”)
@Vijay这是完全正确的,但是我只使用了类中的第二个div作为示例。我实际上希望所有图像都不在某个描述的祖先下。如果忽略该div本身,那么该div下的所有图像都将自动丢弃。
document.queryselectoral(#parent div:not(.amazingDiv2)img)
当你可以选择一个积极的条件时,为什么要选择一个消极的条件。
document.queryselectoral(“.amazingDiv2 img”)
@Vijay这是完全正确的,但是我只使用了类中的第二个div作为示例。我实际上希望所有图像都不在某个描述的祖先下。如果忽略该div本身,那么该div下的所有图像都将自动丢弃。
document.queryselectoral(#parent div:not(.amazingDiv2)img)
感谢您提供的详细答案!感谢您提供的详细答案!我看不出有什么问题-事实上,它太简单了,我简直不敢相信我没有尝试过。不过,我确实大量使用了我的查询方法的
上下文
参数,我已经有了一个HtmleElement实例。我看不出有什么问题-事实上,它太简单了我不敢相信我没有尝试过。但是我确实大量使用了我的查询方法的
context
参数,对此我已经有了一个H