:nth-child
scans the children of the parent no matter what their styling is. The counting in :nth-child
is relative to the parent element, not the previous selector. This is explained in the jQuery docs for :nth-child
:
With
:nth-child(n)
, all children are counted, regardless of what they are, and the specified element is selected only if it matches the selector attached to the pseudo-class.
Using a more simple method with each
does exactly what you want:
$('#test li:visible').each(function (i) {
if (i % 4 == 0) $(this).addClass('fourth-item');
});