У меня есть эта разметка:
<div id="container">
<h1>Heading</h1>
<p>Some text</p>
<div class="foo">Some stuff</div>
<div class="foo">Some stuff</div>
<div class="foo">Some stuff</div>
<div class="foo">Some stuff</div>
<div class="foo">Some stuff</div>
<div class="foo">Some stuff</div>
<!-- ... same thing on down the page ... -->
<div class="foo">Some stuff</div>
<div class="foo">Some stuff</div>
<div class="foo">Some stuff</div>
</div>
Я бы хотел добавить класс к каждому четвертому div. Вот jQuery, который я ожидал, будет работать:
$('div.foo:nth-child(4n)').addClass('bar');
Но это приводит к:
<div id="container">
<h1>Heading</h1>
<p>Some text</p>
<div class="foo">Some stuff</div>
<div class="foo bar">Some stuff</div>
<div class="foo">Some stuff</div>
<div class="foo">Some stuff</div>
<div class="foo">Some stuff</div>
<div class="foo bar">Some stuff</div>
<div class="foo">Some stuff</div>
<div class="foo">Some stuff</div>
<div class="foo">Some stuff</div>
<div class="foo bar">Some stuff</div>
<div class="foo">Some stuff</div>
<div class="foo">Some stuff</div>
<div class="foo">Some stuff</div>
<div class="foo bar">Some stuff</div>
<div class="foo">Some stuff</div>
<div class="foo">Some stuff</div>
<div class="foo">Some stuff</div>
</div> <!-- #container -->
Итак, очевидно, что все дочерние элементы подсчитываются, и только соответствующий элемент добавляет класс. Я мог бы просто принять во внимание эти два других элемента и использовать :nth-child(4n+2)
, но я не всегда могу рассчитывать на то, что перед моими div
s стоят ровно два элемента.
Есть ли n-дочерний подобный селектор (или метод), который будет учитывать только указанный элемент при подсчете?