DOM要素を選択するためのセレクタのまとめ -『jQuery』
- uto usui
- //
- javascript
- jQuery
jQueryでDOM要素を選択するときに使うことのできるセレクタのまとめです。
jQueryのセレクタまとめ
jQueryの$()
関数の第一引数にセレクタが入っている場合、第二引数はその処理の処理のコンテクストを示します。第二引数が割り当てられていない場合は、デフォルトのコンテクストとして、そのセレクタをDOMツリーのあらゆる要素に適用するというコンテクストになります。
コンテクストにはDOM要素の参照を使えますが、jQueryセレクタを含む文字列も、ラップされたDOM要素の集合も記述することができます。$()
の中に$()
を入れてokです。
$(selector)
$(selector, context)
基本のCSSセレクタ
IDやクラス名、タグ名、それらの階層構造などCSSを扱うときによく使うセレクタをjQueryで使います。
- *
- あらゆる要素
- E
- タグ名がEのすべての要素すべて
- E F
- タグ名がEの子孫で、タグ名がFの要素すべて
- E > F
- タグ名がEの直接の子で、タグ名がFの要素すべて
- E + F
- タグ名がEの直後で、タグ名がFの要素すべて
- E ~ F
- タグ名がEより後ろにある、タグ名がFの要素すべて
- E.C
- Cというクラス名の、Eというタグ名の要素すべて
- E#I
- CというID名の、Eというタグ名の要素すべて
- E[A]
- Aという属性を持つ、Eというタグ名の要素すべて
- E[A=V]
- Aという属性でVという値を持つ、Eというタグ名の要素すべて
- E[A^=V]
- Aという属性でVから始まる値を持つ、Eというタグ名の要素すべて
- E[A^=V]
- Aという属性でVから始まる値を持つ、Eというタグ名の要素すべて
- E[A$=V]
- Aという属性でVで終わる値を持つ、Eというタグ名の要素すべて
- E[A*=V]
- Aという属性でVを含む値を持つ、またはAという属性を持たない、Eというタグ名の要素すべて
- E[A!=V]
- Aという属性でVではない値を持つ、またはAという属性を持たない、Eというタグ名の要素すべて
位置を指定するセレクタ
ページ上の位置や他の要素との相対的な関係によって要素を選択する時に使うセレクタです。ここではCSSで擬似クラスと呼ばれているものを扱っていますが、jQueryではフィルタセレクタと呼ばれ、:
をつけて記述します。
フィルタセレクタのみで、セレクタを省略したときは、デフォルトで*
がセレクタに指定されています。
- p a:first
p
要素の子孫要素の最初のa
要素すべて- p a:last
p
要素の子孫要素の最後のa
要素すべて- p a:first-child
p
要素の最初の子孫要素のa
要素すべて- p a:last-child
p
要素の最後の子孫要素のa
要素すべて- p:only-child
- 兄弟を持たない
p
要素すべて - p a:nth-child(n)
p
要素の子孫要素のn番目のa
要素すべて- p a:nth-child(even / odd)
p
要素の子孫要素の偶数 / 奇数番目のa
要素すべて- p:even
- 偶数番目の
p
要素すべて - p:odd
- 奇数番目の
p
要素すべて - p:eq(n)
- n番目の
p
要素すべて - p:gt(n)
- n番目の
p
要素を除いた、それ以降のp
要素 - p:gt(n)
- n番目の
p
要素を除いた、それ以前のp
要素
順序に関する注意
nth-child
フィルタはCSSとの互換をとるため1から数えますが、他のセレクタは一般的なプログラミング通り0から数えます。
カスタムフィルタセレクタ
その他の強力なセレクタで、状態などに応じて要素を選択します。
- E:animated
- 現在アニメーションが実行中の、タグ名がEの要素すべて
- I:checked
- チェックされた状態の、チェックボックスかラジオボタンすべて
- E:disabled
- 無効になっている、タグ名がEのフォームの要素すべて
- E:enabled
- 有効になっている、タグ名がEのフォームの要素すべて
- E:empty
- 子要素またはテキストを持っていない、タグ名がEの要素すべて
- E:parent
- 子要素またはテキストを持っている、タグ名がEの要素すべて
- E:hidden
- 不可視状態の、タグ名がEの要素すべて
- E:visible
- 可視状態の、タグ名がEの要素すべて
- E:has(F)
- Fというタグ名の要素をひとつ以上含んでいる、タグ名がEの要素すべて
- E:contains(test)
- testというテキストをふくむ、タグ名がEの要素すべて
- E:not(selector)
- selectorで指定されたセレクタの逆の条件の、タグ名がEの要素すべて
使い方に関して、ややこしいものについて掘り下げてみます。
:notフィルタ
セレクタを論理逆転させたい場合には、:not
フィルタを使います。
// チェックされていないチェックボックスまたはラジオボタン
$('input:not(:checked)')
// 拡張子がpng以外のimg要素
$('img:not([src*=".png"])')
:hasフィルタ
特定の要素を持っている要素を選択したい時:has
フィルタを使います。
// 拡張子がpngのimg要素を含んでいるp要素
$('p:has(img[src*=".png"]))')
おわります。