我有一个这样的DOM结构:
<div class="thing">
<div class="title"></div>
<div class="content">
<div class="thing">
<div class="title"></div>
<div class="content">
<!-- More .thing may be here-->
</div>
</div>
</div>
</div>
在这个例子中,我有一个类.thing
,它有一个.title
和.content
。.content
的内容可能是另一个.thing
。我遇到的问题是,给定任意.thing
,我希望能够查询其.content
和.title
,而不查询.content
内部的任何内容。
const thing = ... // get some .thing
const title = thing.querySelector(':scope > .title')
问题在于,我希望能够在.thing
和.title
之间插入任意数量的元素。我的一个想法是使用:not
伪类:
const title = thing.querySelector('.title:not(.content *)').
背后的理论是,我想要一个标题,不是内容的孩子。这适用于顶级标题,但不适用于嵌套的内容。最好的查询方式是什么?
给你想要抓取的内容一个data-attribute。
的例子:
const div = document.querySelector("[data-getter='title']");
console.log(div);
[data-getter="title"] {
background-color: orange;
}
<div>
<div data-getter="title">
<p>random text</p>
</div>
<div>2nd text</div>
</div>