3 で完全に除算されるすべての値に最後を追加しようとしていi
ますが、インデックス 0 をそれらの 1 つにしたくありません。最初のアイテムを除く3番目のアイテムごとにモジュラスを使用する方法を誰か教えてもらえますか?
((i%3==0) ? 'last' : '');
3 で完全に除算されるすべての値に最後を追加しようとしていi
ますが、インデックス 0 をそれらの 1 つにしたくありません。最初のアイテムを除く3番目のアイテムごとにモジュラスを使用する方法を誰か教えてもらえますか?
((i%3==0) ? 'last' : '');
if (i!=0 && i % 3 == 0) ...
場合によっては、エッジ ケースの包括的ソリューションを見つけようとする代わりに、明示的に 0 を含めたくないと言います。
何かのようなもの:
if(i > 0 && i % 3 == 0) {
// stuff ...
}
最初の要素を除くすべての 3 番目の要素に CSS クラスを適用するだけでよい場合は、次のようにするだけで済みます。
$('.yourClass:nth-child(3n+4)').addClass('newClass');
デモ: http://jsfiddle.net/uuBzD/
カウントが index から始まる場合0
、クラスは要素3
、6
などに適用さ9
れます。
投稿された回答のいくつかを試した後、最も簡単な解決策は、インデックスに 1 を追加して計算を非ゼロベースにすることであることがわかりました。
var isThirdIteration = (i + 1) % 3 === 0;
これは単純すぎるように聞こえるかもしれませんが、for
ループの場合は 1 から数えることができ、反復ごとにチェックする必要はありません (パフォーマンスがわずかに向上します)。
for ( var i = 1; i < arr.length; i++ ) {
arr[i].className = i % 3 ? "" : "last";
}
className
そうでない要素にを割り当てる必要がない場合はi %3
、0
を使用してパフォーマンスをわずかに改善できますif
。
for ( var i = 1; i < arr.length; i++ ) {
if ( !( i % 3 ) ) {
arr[i].className = "last";
}
}
もちろん、0 からカウントを開始する必要がある場合は、次のループを使用できます。
for ( var i = 0; i < arr.length; i++ ) {
if ( !( i % 3 ) && ( i ) ) {
arr[i].className = "last";
}
}
i!==0
条件が後に置かれる理由i % 3
は、最初の条件がより一般的であり、ほとんどすべての反復でチェックする必要があるためです。そのため、すべての反復をやみくもにチェックするよりもパフォーマンスがさらに向上i!==0
します。
とにかく、あなた自身のコーディングスタイルで簡単に答えるには:
(i%3==0 && i ? 'last' : '');