javascript - 斑马条纹忽略隐藏元素

标签 javascript jquery css css-selectors

假设我有一个表,其行可以动态分配 .hidden 类。具有该类的行通过 CSS 隐藏。行也使用交替颜色设置样式,如下所示:

tr:nth-child(even) {
    background-color: $light-grey;
}

但是,我希望每个偶数、未隐藏 行都带有阴影。因此,当应用 :nth-child(even) 时,不计算隐藏行,并且模式看起来一致。以下是我的直接尝试,但它没有达到我希望的效果。

tr:not(.hidden):nth-child(even) {
    background-color: $light-grey;
}

:nth-child() 只是引用行的原始索引,而不是 tr:not(.hidden) 中的当前选择范围。两者只是相互“过滤”。

CSS 中是否有 :nth-of-scope/selection()(或简单的 :nth())元类?是否有任何等效或替代方法?

还是我必须求助于 Javascript?

(我应该说我也可以使用 jQuery)

最佳答案

在纯 CSS 中无法做到这一点,因为添加 display:nonevisibility:none 不会从 DOM 中删除元素,这正是 CSS用途。

因此,您需要添加一些 JavaScript(在页面加载后运行)来执行此操作,like so

var trs = document.getElementsByTagName("tr"), // Select whichever ones you need
    count = 0; // Counter for the non-hidden ones

for(var i = 0; i < trs.length; i++) {    
    if(!trs[i].classList.contains("hidden") && (count++)%2 == 0) { // Odd ones
        trs[i].style.background = "black";
    } else if(!trs[i].classList.contains("hidden")) { // Even ones
        trs[i].style.background = "lightgrey";
    }
}

关于javascript - 斑马条纹忽略隐藏元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26791925/

相关文章:

javascript - 在 jQuery UI Datepicker 中输入文本值

css - BODY 背景图像在浏览器视口(viewport)中被截断

使用 CSS 编写 PHP 脚本

javascript - Kendo-UI Grid 在 Javascript 中获取单元格值

javascript - 使用 SPServices 从 Sharepoint 列表中获取项目时,项目未定义

javascript - css touch-action none on body, pinch-zoom on element

c# - C# 代码后面的 Javascript 确认框

javascript - Js - 检查对象的嵌套值是否相同

javascript - 使用 jQuery ajax 函数验证表单时未设置 $_POST 变量

html - 为什么 css 宽度属性与输入元素一起使用