CSS:如何选择 parent 的 sibling

标签 css css-selectors

<分区>

我的页面中有以下 HTML。

<ul id="detailsList">
    <li>
        <input type="checkbox" id="showCheckbox" />
        <label for="showCheckbox">Show Details</label>
    </li>
    <li>content ...</li>
    <li>content ...</li>
    <li>content ...</li>
    <li>content ...</li>
    <li>content ...</li>
</ul>

我无法更改此 HTML。我已经使用以下 CSS 隐藏了除第一个之外的所有 LI

ul#detailsList li:nth-child(1n+2) {
    display:none;
}

到目前为止一切顺利。我现在想做的是在勾选复选框时使用纯 CSS 显示那些隐藏的 LI。到目前为止我最好的尝试是

ul#detailsList li input#showCheckbox:checked + li {
    display:block;
}

显然这行不通,因为 + li 只会选择紧跟在复选框之后的 LI(即 sibling ),而不是 parent 的 sibling 。

这可能吗?

最佳答案

您可以使用 has() :

ul#detailsList:has(> li > input#showCheckbox:checked) > li {
    display: block;
}

你不能用 CSS 做到这一点,但是

你可以尝试使用 jQuery

$("#showCheckbox").click(function(){
    $(this).parent().siblings().show();
});

关于CSS:如何选择 parent 的 sibling ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17048566/

相关文章:

javascript - php 生成的元素的图像覆盖

html - w3c 标准是否允许相同的 z 索引

javascript - 在 jQuery 中实现 CSS

jquery - 在 CSS 选择器中使用 &

javascript - CSS nth-child 不适用于动态隐藏的元素 [AngularJS]

html - 使用 CSS 在类中居中对齐内容?

html - 我如何制作响应式 Bootstrap 元素

SVG 上的 CSS 动画不起作用

javascript - 如何在 Javascript 中访问具有相同属性的动态控件

javascript - 模态重叠内容并使内容在 Bootstrap 中不可点击?