querySelectorAll的选择器无效:不带后代

Per*_*ell 0 javascript css-selectors selectors-api

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

以我的小提琴为例:http://jsfiddle.net/rjdbys13/ 我有2个<div>,每个都有一个<img>内部.我想选择所有图像,但不能选择其中一个图像<div>(都有不同的类).

要做到这一点,这适用于jQuery和Sizzlejs,我可以使用像这样的选择器img:not(.amazingDiv img).根据我的理解,这将选择所有<img><div>包含s 的后代的元素amazingDiv.这很好,正如我所说的那些支持更详细:not语法的库,但它失败并出现错误querySelectorAll:

Uncaught SyntaxError: Failed to execute 'querySelectorAll' on 'Document': 'img:not(.amazingDiv img)' is not a valid selector.

我真的想避免对我收集的元素进行任何"后处理",那么有没有办法通过使用来实现我正在寻找的东西querySelectorAll?(我也试过使用库"qwery","微选择器"和"坚果")

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

Ale*_*har 5

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

选择器级别3不允许在:not()伪类中使用单个简单选择器.

否定伪类,不是(X),是一个函数符号,它将一个简单的选择器(不包括否定伪类本身)作为参数.它表示一个未由其参数表示的元素.