Задайте каждую n-ю итерацию элемента, имеющего определенный класс
Я знаю, что не могу сделать это с помощью CSS, но мне интересно, с jQuery, если можно настроить таргетинг на каждую n-ю итерацию элемента, имеющего определенный класс. Поэтому, если бы я хотел выбрать каждый четвертый элемент .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");
});
Ответы
Ответ 1
Да, вы можете использовать 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>
Ответ 2
Используйте filter()
метод для фильтрации по индексу.
$('ul .media').filter(function(i) {
return (i + 1) % 4 == 0;
}).addClass('class')
.class {
color: red
}
<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>
Ответ 3
Попробуйте следующее:
var i = 0;
$('.media').each(function() {
i++;
if (i%4==0) {
$(this).addClass("fourth");
}
});