为什么将el.querySelectorAll与以'>'开头的选择器一起使用是非法的?什么是简单的替代解决方案?

var el = document.createElement('div');

el.querySelector('> div');

上面的代码将产生DOM异常12。解决方案必须避免使用jquery,它确实支持此操作且没有错误。可以提供Zepto解决方案,因为Zepto不支持此解决方案。

当选择不以“>”是有效的:
el.querySelectorAll('div > div');

最佳答案

document.querySelectorAll需要一个字符串,其中包含一个或多个用逗号分隔的CSS选择器。
'> div'不是有效的CSS选择器。
>是一个子组合器。 child 组合器描述了两个元素之间的童年关系。
'> div'只有一个元素。' div >'也不起作用。

有关更多信息,请参见

  • https://developer.mozilla.org/en-US/docs/Web/API/Document.querySelectorAll
  • http://easy-css.appspot.com/?chap=chap-4-7-2&prev=35&next=37&current=36
  • http://www.w3.org/TR/selectors/#child-combinators
  • 关于javascript - 为什么此表达式在querySelectorAll中是非法的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17957647/

    10-11 20:06