querySelector 查找 DOM 元素,该元素在其树中的任何位置都有特定文本
querySelector to find a DOM element which has particular text anywhere inside its tree
<div>
<card class="card-class">
<header class="header-class">Title 1</header>
</card>
<div>Stuff</div>
<card class="card-class"> <-- This one
<header class="header-class">Title 2</header>
</card>
<div>More stuff?</div>
<card class="card-class">
<header class="header-class">Title 3</header>
</card>
</div>
我想使用 2 个条件提取示例中所述的 DOM 元素。我感兴趣的 dom 元素有一个 class card-class
并且在这个 DOM 元素的某处有一个带有 class header-class
的元素里面有个标题。
我需要通过标题文字获得一张特定的卡片。所以在这个例子中,我想要带有 'Title 2' 的卡片元素。有没有办法只用一个选择器而不是 javascript 来实现这个?
不确定 one-liner 是否可行,但这里有一个替代方案:
首先你得到所有“header-class”,它们是“card-class”的后代。
然后你遍历它们寻找请求的标题。
最后,您访问 parent 组件,这就是您要查找的卡片。
const cards = document.querySelectorAll(".card-class .header-class");
for (let card of cards) {
if (card.innerHTML === "Title 2") {
let cardYouAreLookingFor = card.parentElement;
console.log(cardYouAreLookingFor);
}
}
希望这对您有所帮助。干杯!
我能看到这一行的唯一可能方法是向元素添加数据属性,然后定位该元素。
const title2 = document.querySelector('.header-class[data-title="Title 2"]');
console.log(title2.textContent);
<div>
<card class="card-class">
<header class="header-class" data-title="Title 1">Title 1</header>
</card>
<div>Stuff</div>
<card class="card-class">
<header class="header-class" data-title="Title 2">Title 2</header>
</card>
<div>More stuff?</div>
<card class="card-class">
<header class="header-class" data-title="Title 3">Title 3</header>
</card>
</div>
<div>
<card class="card-class">
<header class="header-class">Title 1</header>
</card>
<div>Stuff</div>
<card class="card-class"> <-- This one
<header class="header-class">Title 2</header>
</card>
<div>More stuff?</div>
<card class="card-class">
<header class="header-class">Title 3</header>
</card>
</div>
我想使用 2 个条件提取示例中所述的 DOM 元素。我感兴趣的 dom 元素有一个 class card-class
并且在这个 DOM 元素的某处有一个带有 class header-class
的元素里面有个标题。
我需要通过标题文字获得一张特定的卡片。所以在这个例子中,我想要带有 'Title 2' 的卡片元素。有没有办法只用一个选择器而不是 javascript 来实现这个?
不确定 one-liner 是否可行,但这里有一个替代方案:
首先你得到所有“header-class”,它们是“card-class”的后代。 然后你遍历它们寻找请求的标题。 最后,您访问 parent 组件,这就是您要查找的卡片。
const cards = document.querySelectorAll(".card-class .header-class");
for (let card of cards) {
if (card.innerHTML === "Title 2") {
let cardYouAreLookingFor = card.parentElement;
console.log(cardYouAreLookingFor);
}
}
希望这对您有所帮助。干杯!
我能看到这一行的唯一可能方法是向元素添加数据属性,然后定位该元素。
const title2 = document.querySelector('.header-class[data-title="Title 2"]');
console.log(title2.textContent);
<div>
<card class="card-class">
<header class="header-class" data-title="Title 1">Title 1</header>
</card>
<div>Stuff</div>
<card class="card-class">
<header class="header-class" data-title="Title 2">Title 2</header>
</card>
<div>More stuff?</div>
<card class="card-class">
<header class="header-class" data-title="Title 3">Title 3</header>
</card>
</div>