css - 返回几个元素的父选择器
问题描述
我不知道如何从具有特定标题属性的特定元素中选择一个元素(几个元素返回)。
例如,使用下面的示例代码,我试图定位第一个<renderer>
元素......
<renderer class="scope">
<div id="content" class="scope">
<renderer class="scope">
<div class="scope">
<div id="details" class="scope">
<a title="Foo Bar" href="#">LINK TEXT</a>
</div>
</div>
</renderer>
</div>
</renderer>
我尝试了很多变化,包括这个......
renderer:has a[title*="Foo Bar"] {
opacity: 0.2 !important;
}
我尝试过的其他事情甚至都没有接近工作(甚至是JavaScript)......但可能是因为我在这里或其他网站上找到的每个答案都与这个问题没有足够的关系来解决这个问题。
如果链接标题中包含特定文本,我如何定位和设置第一个<renderer>
元素(或至少 2 个级别)的样式?
解决方案
没有办法在 CSS 中选择父元素。您可以使用 javascript 来实现所需的结果。
你可以做这样的事情
let anchor = document.querySelector('a[title="Foo Bar"]');
anchor.closest('renderer').style.opacity = 0.2;
如果要选择文档中的所有元素,可以使用 querySelectorAll ,例如:
let anchors = document.querySelectorAll('a[title="Foo Bar"]');
anchors.forEach(function (anchor) {
anchor.closest('renderer').style.opacity = 0.2;
});
注意:closest() 在 IE 中不起作用,因此您可能必须添加它的 polyfill 或改用 parentNode。
推荐阅读
- swift - Swift - 如果每个项目都存在于列表中,如何检查所有子集并返回 true
- java - 将字符串添加到对象列表
- python - Python 套接字错误 300 '永久移动'
- json - jq-更新一个json的值添加一个前缀
- c# - 带有简单注入器的 ASP.NET Core 2.1 服务定位器返回 null
- c++ - 如何在双精度数组上定义比较运算符(小于)?
- javascript - jQuery和另一个js之间的冲突
- java - Postgres 引起:java.lang.NoClassDefFoundError: 无法初始化类 org.postgresql.util.GT
- azure-media-services - Azure 媒体服务 v3 - 事件网格 - 删除资产不会触发任何存储事件
- amazon-web-services - AWS:ALB 立即或 130 秒后响应