UPDATE: 私は、これは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/)
:ない:n番目の子のような任意の追加のフィルタを無視して、一致するすべての要素をカウントします。
参照のjQueryのDOC:
2つは劇的に異なるマッチした要素をもたらすことができるにもかかわらず、当量(N):n番目の子(N)擬似クラスはで容易に混乱しています。 :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/
私は同様の問題を抱えていましたが、代わりに他のすべての要素を実行したかったのです。これは、3番目の要素の代わりに1つおきの要素だけを探している場合は、これを行うためのややクリーンな方法です。フィルタ(:偶数).css( '色'、 '赤'); ' –