【发布时间】:2018-06-22 23:26:41
【问题描述】:
编辑 结构未知 - 它应该适用于任何新闻网站,其中有一个容器/包装器,其中包含 h1 和 p+p(与该页面的主要文章相关的所有内容)
我想要的也可以实现
let story = document.querySelector('p+p').parentElement;
while(!story.querySelector('h1')){
story = story.parentElement;
}
console.log(story);
但我想知道是否有更好的解决方案?
每篇新闻文章都有 h1 标签和带有文本的段落。我想知道是否可以编写一个 选择包含 h1 和 p+p 的最接近的父/容器元素的 querySelector。诀窍是它应该适用于任何新闻网站...
当我写作时
document.body.querySelector('* h1')
我可以获得 h1 容器,但是根据 HTML5,页面上可能有多个 h1 标签
我知道 querySelectorAll,但这对我的情况没有帮助
当我写作时
document.body.querySelector('* p+p').parentElement
我可以获得带有文本段落的文章正文的容器
我的问题是是否可以将这两个示例合并到一个查询中? (无循环和多个查询) 比如……
document.body.querySelector('* ~ h1 ~ p+p')
document.body.querySelector('* h1 p+p')
...但可行????
【问题讨论】:
-
你还没有为此标记 jQuery。 jQuery 解决方案好吗?
-
我现在更喜欢远离 jQuery,但如果有 jQuery 解决方案,也许它可以以某种方式移植到 vanillaJS?
-
Element#closest() 在我的情况下不起作用或者我做错了:(
-
@PatrickEvans 我在这里不举例子,因为每个人都会编写仅适用于那些提供的案例的解决方案......此外,结构是未知的 - 这是棘手的部分,但如果我的解决方案使用 while循环没问题,然后就让它去吧 - 以为我错过了一些非常简单的东西,可以在单个查询中获取它
标签: javascript html dom css-selectors selectors-api