【发布时间】:2013-07-31 05:26:48
【问题描述】:
为什么将 el.querySelectorAll 与以“>”开头的选择器一起使用是非法的?什么是简单的替代解决方案?
var el = document.createElement('div');
el.querySelector('> div');
上面的这段代码会产生一个 DOM Exception 12。解决方案必须避免使用 jquery,它确实支持这一点而不会出错。可以提供 Zepto 解决方案,因为 Zepto 不支持。
When the selector does not start with '>' it is valid:
el.querySelectorAll('div > div');
【问题讨论】:
-
使用
.children或.childNodes -
您要求的是左侧选择器的直系后代,因此 "x > y" 有意义,而 "> y" 则没有。
-
@lossleader 关键是 OP 很困惑,因为 jQuery 确实 支持这个选择器,因为它不仅仅是将它传递给
querySelector- 它解析它并确定它需要采取的工作路径 -
他已经指定他不想使用 jquery.. 所以他最好学习有效的 css。 jquery 文档本身解释了什么是扩展。
-
@lossleader 当然可以 -
Solution must avoid using jquery, which does support this without error.
标签: javascript css css-selectors selectors-api