Javascript 选择元素的子元素[ren],就像选择子元素[s]一样

Javascript 选择元素的子元素[ren],就像选择子元素[s]一样,javascript,dom,css-selectors,Javascript,Dom,Css Selectors,假设我有一个HTMLElement: 我可以选择其描述,即。stripey: 这类似于CSS规则: #hoop .stripey { 但是,如何在不使用jQuery的情况下对child[ren]执行相同的操作 虽然在jQuery/Sizzle中可以,但它不起作用。这个CSS规则的JS等价物是什么 #hoop > .stripey { 最简单的方法是在querySelectorAll中使用完整的选择器 但是,如果回答你的具体问题 我认为基于选择器选择元素的子元素的最好方法是: 将.chi

假设我有一个HTMLElement:

我可以选择其描述,即。stripey:

这类似于CSS规则:

#hoop .stripey {
但是,如何在不使用jQuery的情况下对child[ren]执行相同的操作

虽然在jQuery/Sizzle中可以,但它不起作用。这个CSS规则的JS等价物是什么

#hoop > .stripey {

最简单的方法是在querySelectorAll中使用完整的选择器

但是,如果回答你的具体问题

我认为基于选择器选择元素的子元素的最好方法是:

将.children集合转换为数组 使用.matches根据选择器筛选每个测试元素 因此:

您可以使用以下命令-


如果它在Sizzle中工作-也许你可以看看它在那里是如何工作的?是的,但我正在寻找正确的标准语法来实现这一点,而不是Sizzle是如何工作的为什么不在querySelectorAll中将其全部定位?document.querySelectorAllhoop>.stripey;它可能来自其他地方,来自不同的模块,等等,但它将被标准化为匹配项
#hoop .stripey {
var stripedChildren = hoop.querySelectorAll('> .stripey')
#hoop > .stripey {
document.querySelectorAll("#hoop > .stripey");
var hoop = document.getElementById("hoop");
var stripedChildren = [].slice.call(hoop.children).filter(function(element) {
    return element.matches(".stripey");
});
document.querySelectorAll("#hoop > .stripey");