リスト内の 3 つの項目をそれぞれ分割して、その子にクラスを追加したい。
<ul>
<li>1</li>
<li>2</li>
<li>3</li><!--target list item-->
<li>4</li>
<li>5</li>
<li>6</li><!--target list item-->
<li>7</li>
</ul>
何か案が?
リスト内の 3 つの項目をそれぞれ分割して、その子にクラスを追加したい。
<ul>
<li>1</li>
<li>2</li>
<li>3</li><!--target list item-->
<li>4</li>
<li>5</li>
<li>6</li><!--target list item-->
<li>7</li>
</ul>
何か案が?
nth-child 疑似セレクターを使用する必要があります
$("ul li:nth-child(3n)").addClass("break-here");
そのための CSS 疑似セレクターがあります。
:nth-child(xn+y)
から始まるすべてx
の子を選択y
するので、あなたの場合x = 3
とy = 1
(デフォルト)
$('li:nth-child(3n)').addClass(...);
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<ul>
<li>1</li>
<li>2</li>
<li>3</li><!--target list item-->
<li>4</li>
<li>5</li>
<li>6</li><!--target list item-->
<li>7</li>
</ul>
<script type="text/javascript">
i = 0;
$.each($("li"), function(key,value) {
i++;
if (i % 3 == 0) {
//Do things
}
})
</script>
$("li").each(function(index,item){
console.debug(index)
if(index % 3 == false){
$(this).addClass("newClass");
}
})
これはトリックになります
疑似セレクターを使用しない別のソリューション
collection.each(function(i, item){
if(! i%3) {
$(item).addClass('c');
}
});
$('ul li').each(function(i,e){
$(e).eq((i+1)%3).addClass('red');
});