:eq()
- $(':eq(index)') 1.0追加
- $(':eq(-index)') 1.8追加
- 注意事項
- デモ
$(':eq(index)') 1.0追加
指定したインデックス番号にマッチする要素を選択します。
項目 | 説明 |
---|---|
index | マッチした要素内で取得したい要素の「0」始まりのインデックス番号を指定します。 |
$(':eq(-index)') 1.8追加
指定したインデックス番号にマッチする要素を選択します。
項目 | 説明 |
---|---|
-index | マッチした要素内にて、最後の要素から反対にカウントして、取得したい要素を0始まりのインデックス番号で指定します。 |
jQueryの1.8より前のバージョンでは、:eq(index)
セレクタはindexに負の値を
受け入れていませんでした。(.eq(index)メソッドでは受け入れていた)
注意事項
インデックスに関するセレクタは(:eq(), :lt(), :gt(), :even, :odd)は、マッチする要素を更に絞り込みます。 また、これらのセレクタは0始まりの番号を指定します。例えば、.myclassのセレクタにマッチした要素が4つあったとすると 適用できるインデックス番号は0~3になります。
javaScriptのArrayが0始まりなのに関連して、$('.myclass:eq(1)')は1つ目の要素ではなく2つ目の要素が選択されます。 それに対して、:nth-child(n)はCSSに従って1始まりになります。
.eq(index)メソッドとは違い、:eq(index)セレクタはマイナスの値を指定することが出来ません。 例えば、$('li').eq(-1)と指定すると最後のLI要素が選択されますが、$('li:eq(-1)')は何も選択しません。
:eq()はjQueryが独自に拡張した仕組みでCSSには存在しない概念です。 そのため、querySelectorAll()によって提供されるパフォーマンスを享受することが出来ません。 最高のパフォーマンスを出すためには、純粋なCSSセレクタのみを使用して要素を特定し、 それに対して$("your-pure-css-selector").eq(index)を適用してください。
デモ
3つ目のTD要素を選択して、フォントカラーを赤に変更しています。
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<table border="1">
<tr><td>TD #0</td><td>TD #1</td><td>TD #2</td></tr>
<tr><td>TD #3</td><td>TD #4</td><td>TD #5</td></tr>
<tr><td>TD #6</td><td>TD #7</td><td>TD #8</td></tr>
</table>
<script>$("td:eq(2)").css("color", "red");</script>
</body>
</html>
:eq()は一つだけしか要素をマッチしません。 それに対してnth-child()を各要素にマッチします。 また、下記のようにループ処理を利用すれば、各要素にマッチさせることが可能です。
<!DOCTYPE html>
<html>
<head>
<style>
body{font-size:12px;}
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<ul class="nav">
<li>List 1, item 1</li>
<li>List 1, item 2</li>
<li>List 1, item 3</li>
</ul>
<ul class="nav">
<li>List 2, item 1</li>
<li>List 2, item 2</li>
<li>List 2, item 3</li>
</ul>
<script>
// :eq(1)に該当するLI要素を一つだけ、背景色を黄色に変更しています。
$("ul.nav li:eq(1)").css( "backgroundColor", "#ff0" );
// :eq(1)に該当するLI要素を、それぞれフォントスタイルを斜体に変更しています。
$("ul.nav").each(function(index) {
$(this).find("li:eq(1)").css( "fontStyle", "italic" );
});
// li:nth-child(2)に該当するそれぞれの要素のフォント色を赤に変更しています。
$("ul.nav li:nth-child(2)").css( "color", "red" );
</script>
</body>
</html>
List 2、item 2を最後から2番目を指定して、classを追加しています。
<!DOCTYPE html>
<html>
<head>
<style>
.foo {
color: blue;
background-color: yellow;
}
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<ul class="nav">
<li>List 1, item 1</li>
<li>List 1, item 2</li>
<li>List 1, item 3</li>
</ul>
<ul class="nav">
<li>List 2, item 1</li>
<li>List 2, item 2</li>
<li>List 2, item 3</li>
</ul>
<script>
$( "li:eq(-2)" ).addClass( "foo" )
</script>
</body>
</html>
© 2010 - 2017 STUDIO KINGDOM