为什么这个表达式在querySelectorAll中是非法的

Tim*_*ind 2 javascript css css-selectors css3 selectors-api

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

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

el.querySelector('> div');
Run Code Online (Sandbox Code Playgroud)

上面的代码将产生一个DOM Exception 12.解决方案必须避免使用jquery,它确实支持它而不会出错.可以提供Zepto解决方案,因为Zepto不支持.

当选择器不以'>'开头时,它是有效的:

el.querySelectorAll('div > div');
Run Code Online (Sandbox Code Playgroud)

Moa*_*han 6

document.querySelectorAll 需要一个包含一个或多个CSS选择器的字符串,用逗号分隔.

'> div' 不是有效的css选择器.

>是一个儿童组合子.儿童组合子描述了两个元素之间的童年关系.

'> div'只有一个元素. ' div >'也行不通.

有关详情,请参阅