我正在try 创建一个不使用类或ID的网站,其 struct 是这样的:

<div>
  <div>
    <div>
      Some content
    </div>
  </div>
  <div>
    Other content
  <div>
</div>

我try 了大约doc.css('div div')个,但返回的是内容的副本,因为嵌套的容器都与该 Select 器匹配.

如果知道它们的深度不同,如何只 Select 嵌套的底部?

这个问题的另一种表达方式是,有没有办法做类似"没有div子级的div"这样的事情?它可能有其他子元素,只是不是div

编辑:

我试着澄清一下,使用上面的html我可以调用:

Doc.css(‘Div Div’).map(&amp;:Text)

以获取文档的文本,该文本被div分成一个array.问题是,该行返回了两次"一些内容",因为即使它在html中存在一次,也有两个‘div div’与该文本匹配.

推荐答案

此代码查找所有叶元素,并判断它们是否为div.我想这就是你想要做的.

// will be used to store all the leaves
const leaves = [];

// uses recursion to find all the leaves 
const findLeaves = ($branch) => {
    if ($branch.children.length === 0)
    {
        leaves.push($branch);
        return;
    }
    [...$branch.children].forEach(($branch) => findLeaves($branch));
};


// parent element of elements you want to search through
const $branch = document.querySelector("body > div");

// initiate finding leaves
findLeaves($branch);

// remove from all the leaves non divs
const what_you_want = leaves.filter(($leaf) => $leaf.tagName === "DIV");
console.log(what_you_want);

Css相关问答推荐

为什么我的CSS关键帧动画在循环之间稍微暂停?

如何在JavaFX中设置分隔符的样式?

VueJS3+Vutify中缺少一些CSS类

使用最小高度和边框使阴影DOM中的元素达到自定义元素高度的100%,如果溢出,还可以zoom 父元素

如何使用 tailwind css 修复滚动条始终位于底部?

如何减少弹性项目之间的差距

Mat table - 保留第一列和复选框

Vue.js 变量中的动态类变量

将 tailwincss 转换为普通 CSS?

Tailwind css 和 Next.js 导航组件 z-index 不工作

如何在不使用 !important 的情况下提高优先级?

我怎样才能将我的按钮向上移动,因为文本是

在 SVG 元素上方添加标签而不移动 SVG 元素

如何添加一个类以在开始时触发转换

为什么不能将特定于供应商的伪元素/类组合成一个规则集?

CSS:背景图像和填充

在 Twitter Bootstrap 中创建圆角的正确方法

跨域 iframe 调整大小

可变高度的 CSS 浮动 div

模拟显示:React Native 中的内联