定位具有特定类的元素的每第n次迭代

时间:2017-03-16 14:28:31

标签: jquery css

我知道我不能用CSS做到这一点,但我想知道,如果有可能定位具有特定类的元素的每个第n次迭代,使用jQuery。因此,如果我想选择每四个.media元素或每三个.media项。

例如:

<ul>
  <li class="element"></li>
  <li class="element"></li>
  <li class="element media"></li>
  <li class="element media"></li>
  <li class="element"></li>
  <li class="element media"></li>
  <li class="element"></li>
  <li class="element media"></li>
</ul>

$('.layout-option--b .media').each(function() {
    $(this).filter(function(index, element) {
        return index % 4;
    }).addClass("fourth");
});

3 个答案:

答案 0 :(得分:4)

是的,您可以使用filter()进行此操作,并使用%检查元素索引。由于i从0开始,您可以使用i + 1

$('li.media').filter(function(i) {
  return (i + 1) % 4 == 0
}).css('color', 'red')
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li class="element">Li</li>
  <li class="element">Li</li>
  <li class="element media">Li</li>
  <li class="element media">Li</li>
  <li class="element">Li</li>
  <li class="element media">Li</li>
  <li class="element">Li</li>
  <li class="element media">Li</li>
</ul>

答案 1 :(得分:2)

使用filter()方法根据索引过滤掉。

&#13;
&#13;
$('ul .media').filter(function(i) {
  return (i + 1) % 4 == 0;
}).addClass('class')
&#13;
.class {
  color: red
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li class="element"></li>
  <li class="element"></li>
  <li class="element media"></li>
  <li class="element media"></li>
  <li class="element"></li>
  <li class="element media"></li>
  <li class="element"></li>
  <li class="element media"></li>
  <li class="element"></li>
  <li class="element"></li>
  <li class="element media"></li>
  <li class="element media"></li>
  <li class="element"></li>
  <li class="element media"></li>
  <li class="element"></li>
  <li class="element media"></li>
</ul>
&#13;
&#13;
&#13;

答案 2 :(得分:1)

试试这个:

var i = 0;
$('.media').each(function() {
    i++;
    if (i%4==0) {
       $(this).addClass("fourth"); 
    }
});