更新:これは、n番目の子またはjQueryの別のセレクターでは不可能だと思います。したがって、より詳細なソリューションの使用を検討してください。
var count = 0;
$('.select-all-these').each(function() {
if(!$(this).hasClass('except-these')) {
count++;
}
if(count === 3) {
$(this).text('every 3rd element');
count = 0
}
});
http://jsfiddle.net/TJdFS/2/(代替バージョン: http: //jsfiddle.net/TJdFS/)
:nth-childは、:notなどの追加のフィルターを無視して、一致するすべての要素をカウントします。
jquerydocを参照してください。
:nth-child(n)疑似クラスは:eq(n)と簡単に混同されますが、2つは劇的に異なる一致要素をもたらす可能性があります。:nth-child(n)を使用すると、子が何であるかに関係なく、すべての子がカウントされ、指定された要素は、疑似クラスにアタッチされたセレクターと一致する場合にのみ選択されます。:eq(n)を使用すると、疑似クラスにアタッチされたセレクターのみがカウントされ、他の要素の子に限定されず、(n + 1)番目のセレクター(nは0ベース)が選択されます。
例:
<div class="select-all-these">1</div>
<div class="select-all-these except-these">2</div>
<div class="select-all-these except-these">3</div>
<div class="select-all-these">4</div>
<div class="select-all-these except-these">5</div>
<div class="select-all-these">6</div>
JS:
$('.select-all-these:not(.except-these):nth-child(6)').text('nth-child counts all elements (1 based!)');
$('.select-all-these:not(.except-these):eq(1)').text('eq counts only matching elements (0 based!)');
結果:
1
2
3
eq counts only matching elements. (0 based!)
5
nth-child counts all elements (1 based!)
http://jsfiddle.net/nFtkE/2/
</ p>