【发布时间】:2013-12-31 16:12:12
【问题描述】:
我有一个网格中的项目列表。其中一些通过.hide 类使用display: none; 被CSS 隐藏。
我正在尝试通过向其中添加一个类 .clear-left 来“清除”每 4 个 可见 项。我不明白为什么我的脚本不起作用。我正在使用 :visible 选择器,但它似乎仍在计算 display: none; 的项目。
应该发生的是,您应该始终看到 3 个项目在一行中并且没有间隙。
http://jsbin.com/ipORemIs/1/edit
HTML
<div class="grid">
<div class="item">
1
</div>
<div class="item hide">
2
</div>
<div class="item">
3
</div>
<div class="item">
4
</div>
<div class="item hide">
5
</div>
<div class="item">
6
</div>
</div>
CSS
body {
margin: 0;
}
.grid {
margin-left: -30px;
}
/* Items that are hidden */
.hide {
display: none;
}
.item {
width: 150px;
float: left;
border: 1px solid;
margin-left: 30px;
margin-bottom: 30px;
padding: 10px;
font-size: 3em;
text-align: center;
}
.clear-left {
clear: left;
}
JS
var $itemShow = $('.item:visible');
$itemShow.filter(':nth-child(3n+1)').addClass('clear-left');
【问题讨论】:
-
nth-child 选择器不会基于自定义索引工作...它基于基于兄弟元素的索引工作