以下の様に複数のul要素があるhtmlの構成で、それぞれのulごとに内包するli要素の偶数番目(0から数えて)にclassを付けたかったので、jQueryのevenセレクタを使ってやってみました。
サンプルコード
html
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<ul>
<li>4</li>
<li>5</li>
</ul>
<ul>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
</ul>
<ul>
<li>11</li>
</ul>
css
.red{
color: red;
}
jQuery
jQuery(function(){
jQuery('ul').find('li:even').addClass('red');
});
以下に挙げる失敗例のように、findセレクタ無しだとul要素ごとじゃなく、全部のli要素を合算した上で偶数にclassを付けてしまいます。
findセレクタを使うと意図どおりにclassがつきました。
find()は指定した要素の「子孫」要素でセレクタにマッチする要素を選択することができます。
jQuery失敗例
jQuery(function(){
jQuery('ul li:even').addClass('red');
});
※ちなみに、0から数えて奇数番目にclassを付けたい場合はoddセレクタを使います。
demo
※上記コードの実行結果を閲覧できます。
demo-find.html