html - 未过滤的第 n 个 child

标签 html css

我有几个元素,我想使用 nth-child 来应用 background-color。问题是我需要能够使用 javascript 动态隐藏这些元素中的任何一个。我想我可以通过添加/删除一个 allow 类,并对其应用 nth-child 来保持交替颜色,但无济于事。我在 jsfiddle 中有一个例子。 http://jsfiddle.net/tL40wz03/ 感谢您的帮助!

HTML

<div class="item allow"></div>
<div class="item allow"></div>
<div class="item allow"></div>
<div class="item allow"></div>
<div class="item allow"></div>
<div class="item allow"></div>
<div class="item allow"></div>
<div class="item"></div>
<div class="item allow"></div>
<div class="item"></div>
<div class="item allow"></div>

CSS

div {
  display: block;
  height: 100px;
  width: 100px;
}

div.allow{
    background: gray; 
}

div:nth-child(even){
  background: orange;
}
div:not(.allow){
    display:none;
}

最佳答案

你需要 JS,比如

function markEven() {
    var items= document.querySelectorAll('div.item');
    var count = 0;
    for (var i = 0; i < items.length; i++) {
        var classes = items[i].classList;
        classes.toggle('even', classes.contains('allow') && ++count % 2);
    }
}

每次将 allow 添加到元素或从元素中删除时调用它。

然后

div.item       { display: none;  background: gray;   }
div.item.allow { display: block;                     }   
div.item.even  {                 background: orange; }

关于html - 未过滤的第 n 个 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28823349/

相关文章:

html - firefox 中的自动换行错误,适用于 safari 和 chrome

javascript - 使用 GPU 加速的视差效果

jquery - 显示图像的悬停工具提示

javascript - angularjs - ng-file-upload 未将模型绑定(bind)到动态创建的 HTML 表单

html - 悬停时图像上的文字

javascript - 无法在 'setSelectionRange' : The input element's type 'HTMLInputElement' ) does not support selection 上执行 ('number'

javascript - 在 span 中显示 var

javascript - 重构两个作用于不同 HTML 标签的相同函数

javascript - 如何将 "slideup()"和 "slidedown()"函数应用于 Jquery Mobile 1.4.5 可折叠?杰菲德尔

css - 关闭 twitter bootstrap 工具提示的优雅方式