首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择元素的child[ren],就像选择descendant[s]一样

选择元素的child[ren],就像选择descendant[s]一样
EN

Stack Overflow用户
提问于 2016-01-29 11:11:04
回答 2查看 54关注 0票数 0

假设我有一个HTMLElement

代码语言:javascript
复制
var hoop = otherLibrary.getHoop()

我可以选择它的下降点,即.stripey

代码语言:javascript
复制
var stripedOnes = hoop.querySelectorAll('.stripey')

这类似于CSS规则:

代码语言:javascript
复制
#hoop .stripey {

但是,我如何在不使用jQuery的情况下为孩子做同样的事情?

代码语言:javascript
复制
var stripedChildren = hoop.querySelectorAll('> .stripey')

不起作用,尽管在jQuery/Sizzle中是这样的。JS与这个CSS规则的等价性是什么?

代码语言:javascript
复制
#hoop > .stripey {
EN

回答 2

Stack Overflow用户

发布于 2016-01-29 11:46:27

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

代码语言:javascript
复制
document.querySelectorAll("#hoop > .stripey");

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

我认为,根据选择器选择元素的子元素的最理想方法是:

  1. .children集合转换为数组
  2. 使用.matches()在选择器上对每个元素进行筛选

所以:

代码语言:javascript
复制
var hoop = document.getElementById("hoop");
var stripedChildren = [].slice.call(hoop.children).filter(function(element) {
    return element.matches(".stripey");
});
票数 1
EN

Stack Overflow用户

发布于 2016-01-29 11:52:44

您可以使用下面的-

代码语言:javascript
复制
document.querySelectorAll("#hoop > .stripey");
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35083039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档