html - 隐藏具有特定类的第一个 div

标签 html css css-selectors

<分区>

我想隐藏(显示:无)第一个类为 .leftAddress 的 div

这是CSS

fieldset .leftAddress:first-of-type{
    display:none;
}

这是html

<fieldset>
    <div class="alert forward"><span class="coming"><strong>NOTE:</strong></span> A maximum of 5 address book entries allowed.</div>
    <div class="leftAddress">Any</div>
    <div class="leftAddress"> 
        <!--Insert-->
        <h3 class="addressBookDefaultName">Harry Testing</h3>
    </div>
    <div class="leftAddress"> 
        <!--Insert-->
        <h3 class="addressBookDefaultName">Heba ElZany</h3>
    </div>
    <div class="leftAddress"> 
        <!--Insert-->
        <h3 class="addressBookDefaultName">Yamen Shahin&nbsp;(primary address)</h3>
    </div>
    <div class="leftAddress"> 
        <!--Insert-->
        <h3 class="addressBookDefaultName">Yamen2 Shahin2</h3>
    </div>
    <div class="leftAddress"> 
        <!--Insert-->
        <h3 class="addressBookDefaultName">Yamen3 Shahin3</h3>
    </div>
</fieldset>

如您所见,我使用了 :first-of-type,但它似乎不起作用。我在这里错过了什么? 我也试过 :nth-of-type(1) http://jsfiddle.net/arns7/4/它不起作用。 所以这个解决方案对我不起作用CSS selector for first element with class

最佳答案

基于 CSS 的解决方案:

据我所知,使用 CSS 没有直接的方法可以做到这一点。但是,您可以执行以下操作作为变通解决方案。

fieldset .leftAddress {
    display:none;
}
fieldset .leftAddress ~ .leftAddress {
    display: block;
}

说明:第一条规则将 display 设置为 none.leftAddress 类下的所有元素fieldset 然后第二个将 display 设置为 block 用于所有具有 .leftAddress 类的元素,该类也有一个具有相同类的先行兄弟。因此,总的来说,类为 .leftAddress 的第一个元素仍然隐藏。

CSS Solution Demo

注意:正如xec指出的那样在注释中,CSS 解决方案仅在用于兄弟元素时才有效。如果他们不是,并且说在字段集中的包装器(另一个级别)内有一个带有 class='leftAddress' 的元素,则字段集中的第一个 .leftAddress 和字段集中包装器中的第一个 .leftAddress 将被隐藏(如 here )。

因此,本质上它将具有该类的第一个元素隐藏在同一父元素中


基于 Javascript 的解决方案:

如果您对使用 Javascript 实现此效果没有任何问题,则可以使用以下代码来实现。此解决方案没有基于 CSS 的解决方案中提到的限制(示例可见 here )。

window.onload = function(){
    document.getElementsByClassName('leftAddress')[0].style.display = 'none';
}
  1. document.getElementsByClassName('leftAddress')[0] - 获取 DOM 中类名为 leftAddress 的第一个元素。 [0] 是必需的,因为 getElementsByClassName 返回一个节点列表(如复数名称所示),因此我们必须像处理任何数组一样引用它。

  2. style.display = 'none' - JavaScript 等效于 CSS display: none

JS Solution Demo

注意:如第 1 点所述,这目前隐藏了整个文档中具有该类的第一个元素。如果您想将其限制为 fieldset 中具有该类的第一个元素,也可以这样做。

关于html - 隐藏具有特定类的第一个 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25094913/

相关文章:

javascript - 使用 JavaScript 计算税金

javascript - 根据 jQuery 中子数据的嵌套父数据值

html - 为什么这个 HTML 输出会改变?

angularjs - 设置 css 类以动态列出选项 AngularJS

html - 如何删除最后一项的边框

javascript - 判断是否为asp :Placeholder is visible Jquery

javascript - CSS - 在元素后放置换行符

css - 将 css 选择器放在悬停元素位置之前的弹出模式上

css - Susy 中的 float 元素具有均匀的宽度、填充和边框

css - 我将如何使用 CSS 定位此 div?