jQueryのセレクタ一覧と指定方法をデモ付きで解説
jQueryのセレクタの概要と種類をまとめました。
セレクタの記述方法を幅広く知っておくことで、より効率的な開発を目指していきましょう。
このページでは、セレクタのサンプルソースコードをあわせて載せておくので、コピペして実際にご確認ください。
セレクタとは?要素を指定する時に使う記述です
セレクタは、$()で囲って操作したい要素を指定するときに使います。
セレクタ(操作したい要素)をメソッド(処理したい内容)で合わせて記述し、要素を動かすことが出来ます。
基本的なセレクタの指定方法
まずはjQueryのセレクタといったらこれ!というべき基本的な記述について抑えましょう。
クラス指定、ID指定、タグ指定の記述を最初に抑えよう
クラス指定、ID指定、タグ指定の3つは、最も使いやすく最も使うであろう記述なので、まずはこれから覚えてください。
指定先 | 記述例 | 解説 |
---|---|---|
class指定 | $('.sample') | 先頭に.(ドット) |
id指定 | $('#sample') | 先頭に#(シャープ) |
HTMLタグで指定 | $('p') | タグをそのまま記述 |
<div class="sample">クラスを指定</div> <div id="sample">IDを指定</div> <p>pタグを指定</p> <script> $(function(){ $('.sample').css('color', 'blue'); $('#sample').css('color', 'green'); $('p').css('color', 'red'); }); </script>
pタグを指定
複合的なセレクタ指定
OR指定
要素を複数設定したい場合は、カンマ区切り(,)で指定することで〇〇または〇〇といった指定が出来ます。
<div class="sample">クラス</div> <p>pタグ</p> <script> $(function(){ //.sampleとpタグを指定する $('p, .sample').css('color', 'red'); }); </script>
pタグ
AND指定
条件を複数指定したい場合は、スペースや区切り文字がなく繋げて記述します。
<div class="sample">クラス</div> <div class="sample hogehoge">pタグ</div> <script> $(function(){ //divかつ.sampleを持つ要素を指定 $('div.sample').css('color', 'red'); //.sample.かつ.hogehogeを持つ要素を指定 $('.sample.hogehoge').css('color', 'blue'); }); </script>
子要素をセレクタ指定
特定の要素の子要素をセレクタ指定する方法です。
指定先 | 記述例 | 解説 |
---|---|---|
子孫要素 | $('.parent .child') | 親要素と子要素の間にスペース |
直下の子要素 | $('.parent > .child') | 親要素と子要素の間に「>」 |
子孫要素を含めたすべての子要素
<ul class="sample"> <li>リスト1-1</li> <li>リスト1-2</li> <li>リスト1-3</li> <ul> <li>リスト2-1</li> <li>リスト2-2</li> <li>リスト2-3</li> </ul> </ul> <script> $(function(){ //.sampleのすべての子要素を指定する $('.sample li').css('color', 'red'); }); </script>
- リスト1-1
- リスト1-2
- リスト1-3
- リスト2-1
- リスト2-2
- リスト2-3
.find()メソッドを使用した子要素指定も可能です。
$('.sample').find('li').css('color', 'red')
直下の子要素
<ul class="sample"> <li>リスト1-1</li> <li>リスト1-2</li> <li>リスト1-3</li> <ul> <li>リスト2-1</li> <li>リスト2-2</li> <li>リスト2-3</li> </ul> </ul> <script> $(function(){ //.sampleの直下の子要素を指定する $('.sample > li').css('color', 'red'); }); </script>
- リスト1-1
- リスト1-2
- リスト1-3
- リスト2-1
- リスト2-2
- リスト2-3
.children()メソッドを使用した子要素指定も可能です。
$('.sample').children('li').css('color', 'red')
子要素指定のメソッドはこちらのページでもまとめております。
親要素の指定は$()内の記述ではなく、.closest()や.parent()メソッドの使用が効率的です。
属性でセレクタ指定
フォーム部品のname属性やdata属性などを参照してセレクタの指定もできます。
aタグのhrefや、class名なども検索で指定できます。
$('[name]') | name="(値問わず)"を持つ要素 |
---|---|
$('[name="test"]') | name="test"を持つ要素 |
$('[name!="test"]') | name属性がtestと不一致の要素 |
$('[name^="test"]') | name="test~" name属性がtestで始まる要素 |
$('[name$="test"]') | name="~test" name属性がtestで終わる要素 |
$('[name*="test"]') | name="~test~" name属性にtestが含まれる要素 |
<p class="fuga">fuga</p> <p class="hoge">hoge</p> <p class="fugahoge">fugahoge</p> <script> $(function(){ //classがfugaから始まる要素の文字を赤くする $('[class^="fuga"]').css('color', 'red'); }); </script>
fuga
hoge
fugahoge
フィルタリングセレクタ指定
指定した要素にフィルタをかけてセレクタを指定する記述です。
表示・非表示で設定
$('.sample:hidden') | 非表示にしているセレクタ |
---|---|
$('.sample:visible') | 表示されているセレクタ |
<p>テキスト1</p> <p style="display: none;">テキスト2</p> <script> $(function(){ //非表示のpタグを表示に変更 $('p:hidden').show(); }); </script>
テキスト1
チェックが入ったチェックボックスを指定
チェックボックスにチェックが入った要素を指定したい場合は:checkedを付けることで選択できます。
<input type="checkbox" name="sample" value="apple">りんご <input type="checkbox" name="sample" value="banana">バナナ <input type="checkbox" name="sample" value="grape">ぶどう <p class="sample_result"></p> <input type="button" class="sample_btn" value="チェックの値を取得する"> <script> $(function(){ $('.sample_btn').click(function(){ $('.sample_result').empty(); $('input[type="checkbox"]:checked').each(function(index, element){ $('.sample_result').append('<p>' + $(element).val() + '</p>'); }); }); }); </script>
このサンプルでは、チェックが入ったチェックボックスを繰り返し取得する.each()メソッドを使用しております。
使用可否の状態で指定
$('input[type="text"]:enabled') | 使用可能 |
---|---|
$('input[type="text"]:disabled') | 使用不可 |
<input type="text" name="sample" value="使用可能"> <input type="text" name="sample" value="使用不可" disabled> <script> $(function(){ //使用不可のテキストボックスの背景を赤に変更 $('input[type="text"]:disabled').css('background-color', 'red'); }); </script>
先頭や末尾、番号指定
$('.sample:first') | 指定セレクタの最初の要素 |
---|---|
$('.sample:last') | 指定セレクタの最後の要素 |
$('.sample:even') | 指定セレクタの偶数番の要素 |
$('.sample:odd') | 指定セレクタの奇数番の要素 |
$('.sample:eq(n)') | 指定セレクタのn番目の要素 |
$('.sample:gt(n)') | 指定セレクタのn番目より後の要素 |
$('.sample:lt(n)') | 指定セレクタのn番目より前の要素 |
<ul> <li>リスト1</li> <li>リスト2</li> <li>リスト3</li> <li>リスト4</li> <li>リスト5</li> <li>リスト6</li> <li>リスト7</li> <li>リスト8</li> <li>リスト9</li> <li>リスト10</li> </ul> <script> $(function(){ //最初の要素を太文字に $('li:first').css('font-weight', 'bold'); //最後の要素を太文字に $('li:last').css('font-weight', 'bold'); //偶数番の要素を赤字に $('li:even').css('color', 'red'); //奇数番の要素を青字に $('li:odd').css('color', 'blue'); //0から数えて5番目の要素の背景を黄色に $('li:eq(5)').css('background-color', 'yellow'); //0から数えて7番目より後の背景を緑色に $('li:gt(7)').css('background-color', 'yellow'); //0から数えて2番目より前の背景を緑色に $('li:lt(2)').css('background-color', 'yellow'); }); </script>
- リスト1
- リスト2
- リスト3
- リスト4
- リスト5
- リスト6
- リスト7
- リスト8
- リスト9
- リスト10
子要素の先頭や末尾、番号指定
$('.sample:first-child') | 指定セレクタの親要素から見て一致する最初の要素 |
---|---|
$('.sample:first-of-type') | 指定セレクタの親要素から見て最初に登場する要素 |
$('.sample:last-child') | 指定セレクタの親要素から見て一致する最後の要素 |
$('.sample:last-of-type') | 指定セレクタの親要素から見て最後に登場する要素 |
$('.sample:only-child') | 指定セレクタの親要素から見て一致する1つしかない要素 |
$('.sample:only-of-type') | 指定セレクタの親要素から見て一致する1つの要素 |
$('.sample:nth-child(n)') | 指定セレクタの親要素から見て検索に一致するn番目の要素 |
$('.sample:nth-of-type(n)') | 指定セレクタの親要素から見て検索するn番目の要素 |
~childと~of-typeの違い
一見同じように見えて実は処理が違うフィルタリングの~childと~of-typeですが、「~child」は厳格な一致のみ対応し、「~of-type」は柔軟に対応する、といった形で覚えてください。
ここで比較例を出します。
<div class="sample1"> <p>1番目の子要素かつ1番目のpタグ</p> <p>2番目の子要素かつ2番目のpタグ</p> <p>3番目の子要素かつ3番目のpタグ</p> </div> <hr> <div class="sample2"> <div>1番目の子要素かつ1番目のdivタグ</div> <p>2番目の子要素かつ1番目のpタグ</p> <p>3番目の子要素かつ2番目のpタグ</p> </div> <script> $(function(){ //親要素から見て一致する最初の要素を赤字に $('p:first-child').css('color', 'red'); //親要素から見て最初に登場する要素の背景を黄色に $('p:first-of-type').css('background-color', 'yellow'); }); </script>
1番目の子要素かつ1番目のpタグ
2番目の子要素かつ2番目のpタグ
3番目の子要素かつ3番目のpタグ
2番目の子要素かつ1番目のpタグ
3番目の子要素かつ2番目のpタグ
first-childで指定した赤字は、後者の.sample2には適用されていません。
これは、指定(pタグ)した親要素(.sample2)の1番目の子要素がpタグではなくdivタグだからです。
それに対して、first-of-typeは親要素から最初に登場するpタグに適用するため、最初の要素のタグ問わず指定できます。
jQueryのセレクタ指定をサンプル付きでまとめました。
記述を忘れそうになったらこちらのページでご確認頂けると嬉しいです。
以上、jQueryのセレクタ一覧と指定方法をデモ付きで解説、でした。
ディスカッション
コメント一覧
まだ、コメントがありません