jQueryを使って特定の要素を指定する際にセレクタを使いますが,指定方法を間違ったりすると,余計な要素まで取得してしまったり,要素そのものを間違えてしまったりします.
セレクタで要素を指定するパターンをまとめてみました。
セレクタって?
セレクタはjQueryを記述する際の$()の中のことを指します.
|
$( "#contents" ).css(...
|
のように記述し,操作したい要素を指定するために使用します.
要素の指定方法あれこれ
全ての要素を指定する
$(
"*"
)
<ol class="class1" id="id1"> <li>Sample1</li> <li>Sample2</li> <li>Sample3</li> <li>Sample4</li> </ol> <ol class="class1" id="id2"> <li>Sample1</li> <li>Sample2</li> <li>Sample3</li> <li>Sample4</li> </ol> <script> $("*").css("color","red"); </script>
- Sample1
- Sample2
- Sample3
- Sample4
- Sample1
- Sample2
- Sample3
- Sample4
基本:要素名で指定する
$(
"要素名"
)
指定した要素のものが全て選択される
<ol class="class1" id="id1"> <li>Sample1</li> <li>Sample2</li> <li>Sample3</li> <li>Sample4</li> </ol> <ol class="class1" id="id2"> <li>Sample1</li> <li>Sample2</li> <li>Sample3</li> <li>Sample4</li> </ol> <script> $("ol").css("color","red"); </script>
- Sample1
- Sample2
- Sample3
- Sample4
- Sample1
- Sample2
- Sample3
- Sample4
IDで指定する
$(
"#ID名"
)
指定したID名の要素1つが選択される。
IDはユニークな要素なので複数選択されることはない。
<ol class="class1" id="id1"> <li>Sample1</li> <li>Sample2</li> <li>Sample3</li> <li>Sample4</li> </ol> <ol class="class1" id="id2"> <li>Sample1</li> <li>Sample2</li> <li>Sample3</li> <li>Sample4</li> </ol> <script> $("#id1").css("color","red"); </script>
- Sample1
- Sample2
- Sample3
- Sample4
- Sample1
- Sample2
- Sample3
- Sample4
CLASSで指定する
$(
".CLASS名"
)
指定したCLASS名の要素が全て選択される
<ol class="class1" id="id1"> <li>Sample1</li> <li>Sample2</li> <li>Sample3</li> <li>Sample4</li> </ol> <ol class="class1" id="id2"> <li>Sample1</li> <li>Sample2</li> <li>Sample3</li> <li>Sample4</li> </ol> <script> $(".class1").css("color","red"); </script>
- Sample1
- Sample2
- Sample3
- Sample4
- Sample1
- Sample2
- Sample3
- Sample4
OR指定
$("要素1,
要素2"
)
カンマ区切りで複数指定できる
<ol class="class1" id="id1"> <li>Sample1</li> <li>Sample2</li> <li>Sample3</li> <li>Sample4</li> </ol> <ol class="class1" id="id2"> <li>Sample1</li> <li>Sample2</li> <li>Sample3</li> <li>Sample4</li> </ol> <script> $("#id1,#id2").css("color","red"); </script>
- Sample1
- Sample2
- Sample3
- Sample4
- Sample1
- Sample2
- Sample3
- Sample4
要素内の要素を指定する
$("
要素1 要素2"
)
スペース区切りで要素内の要素を指定できる
<div id="div1" class="classA"> DIV1 <div id="div2" class="classA"> DIV2 <div id="div3" class="classA"> DIV3 </div> </div> <div id="div4" class="classA"> DIV4 <div id="div5" class="classA"> DIV5 </div> </div> </div> <script> $("#div2 .classA").css("color","red"); </script>
DIV1
DIV2
DIV3
DIV4
DIV5
要素内の要素を指定する②
$("
要素1 > 要素2"
)
要素と要素の間に>を入れることで、要素直下の要素という指定ができる
<div id="div1" class="classA"> DIV1 <div id="div2" class="classA"> DIV2 <div id="div3" class="classA"> DIV3 </div> </div> <div id="div4" class="classA"> DIV4 <div id="div5" class="classA"> DIV5 </div> </div> </div> <script> $("#div2 > .classA").css("color","red"); </script>
DIV1
DIV2
DIV3
DIV4
DIV5
要素の次の要素を指定する
$("
要素1 + 要素2"
)
要素と要素の間に+を入れることで、要素の次の要素という指定ができる
<div id="div1" class="classA"> DIV1 <div id="div2" class="classA"> DIV2 <div id="div3" class="classA"> DIV3 </div> </div> <div id="div4" class="classA"> DIV4 <div id="div5" class="classA"> DIV5 </div> </div> </div> <script> $("#div2 + .classA").css("color","red"); </script>
DIV1
DIV2
DIV3
DIV4
DIV5
要素より後に出現する要素で指定する
$("
要素1 ~ 要素2"
)
要素と要素の間に~(チルダ)を入れることで、要素1より後の要素2という指定ができる
<div id="div1" class="classA"> DIV1 <div id="div2" class="classA"> DIV2 <div id="div3" class="classA"> DIV3 </div> </div> <div id="div4" class="classA"> DIV4 <div id="div5" class="classA"> DIV5 </div> </div> </div> <script> $("#div2 ~ .classA").css("color","red"); </script>
DIV1
DIV2
DIV3
DIV4
DIV5
フィルター指定方法あれこれ
要素全体の最初の要素
$(
"要素:first"
)
要素全体のうち、最初の要素を指定
<ol class="class1" id="id1"> <li class="classA">Sample1</li> <li class="classA">Sample2</li> <li class="classA">Sample3</li> <li class="classA">Sample4</li> </ol> <ol class="class1" id="id2"> <li class="classA">Sample1</li> <li class="classA">Sample2</li> <li class="classA">Sample3</li> <li class="classA">Sample4</li> </ol> <script> $(".class1 > .classA:first").css("color","red"); </script>
- Sample1
- Sample2
- Sample3
- Sample4
- Sample1
- Sample2
- Sample3
- Sample4
要素全体の最後の要素
$(
"要素:last"
)
要素全体のうち、最後の要素を指定
<ol class="class1" id="id1"> <li class="classA">Sample1</li> <li class="classA">Sample2</li> <li class="classA">Sample3</li> <li class="classA">Sample4</li> </ol> <ol class="class1" id="id2"> <li class="classA">Sample1</li> <li class="classA">Sample2</li> <li class="classA">Sample3</li> <li class="classA">Sample4</li> </ol> <script> $(".class1 > .classA:last").css("color","red"); </script>
- Sample1
- Sample2
- Sample3
- Sample4
- Sample1
- Sample2
- Sample3
- Sample4
親要素を起点とした最初の要素
$(
"要素1 > 要素2:first-child"
)
要素1を起点とした要素2の最初の要素
<ol class="class1" id="id1"> <li class="classA">Sample1</li> <li class="classA">Sample2</li> <li class="classA">Sample3</li> <li class="classA">Sample4</li> </ol> <ol class="class1" id="id2"> <li class="classA">Sample1</li> <li class="classA">Sample2</li> <li class="classA">Sample3</li> <li class="classA">Sample4</li> </ol> <script> $(".class1 > .classA:first-child").css("color","red"); </script>
- Sample1
- Sample2
- Sample3
- Sample4
- Sample1
- Sample2
- Sample3
- Sample4
親要素を起点とした最後の要素
$(
"要素1 > 要素2:last-child"
)
要素1を起点とした要素2の最後の要素
<ol class="class1" id="id1"> <li class="classA">Sample1</li> <li class="classA">Sample2</li> <li class="classA">Sample3</li> <li class="classA">Sample4</li> </ol> <ol class="class1" id="id2"> <li class="classA">Sample1</li> <li class="classA">Sample2</li> <li class="classA">Sample3</li> <li class="classA">Sample4</li> </ol> <script> $(".class1 > .classA:last-child").css("color","red"); </script>
- Sample1
- Sample2
- Sample3
- Sample4
- Sample1
- Sample2
- Sample3
- Sample4
偶数番の要素
$(
"要素:even"
)
<ol class="class1" id="id1"> <li class="classA">Sample1</li> <li class="classA">Sample2</li> <li class="classA">Sample3</li> <li class="classA">Sample4</li> </ol> <ol class="class1" id="id2"> <li class="classA">Sample1</li> <li class="classA">Sample2</li> <li class="classA">Sample3</li> <li class="classA">Sample4</li> </ol> <script> $(".classA:even").css("color","red"); </script>
- Sample1
- Sample2
- Sample3
- Sample4
- Sample1
- Sample2
- Sample3
- Sample4
奇数番の要素
$(
"要素:odd"
)
<ol class="class1" id="id1"> <li class="classA">Sample1</li> <li class="classA">Sample2</li> <li class="classA">Sample3</li> <li class="classA">Sample4</li> </ol> <ol class="class1" id="id2"> <li class="classA">Sample1</li> <li class="classA">Sample2</li> <li class="classA">Sample3</li> <li class="classA">Sample4</li> </ol> <script> $(".classA:odd").css("color","red"); </script>
- Sample1
- Sample2
- Sample3
- Sample4
- Sample1
- Sample2
- Sample3
- Sample4
指定番目の要素
$(
"要素:eq(
指定番
)"
)
$(
"要素:lt(
指定番
)"
)
$(
"要素:gt(
指定番
)"
)
<ol class="class1" id="id1"> <li class="classA">Sample1</li> <li class="classA">Sample2</li> <li class="classA">Sample3</li> <li class="classA">Sample4</li> </ol> <ol class="class1" id="id2"> <li class="classA">Sample1</li> <li class="classA">Sample2</li> <li class="classA">Sample3</li> <li class="classA">Sample4</li> </ol> <script> $(".classA:eq(3)").css("color","red"); $(".classA:lt(2)").css("color","orange"); $(".classA:gt(5)").css("color","blue"); </script>
- Sample1
- Sample2
- Sample3
- Sample4
- Sample1
- Sample2
- Sample3
- Sample4
要素1の子要素のうち指定番目の要素が要素2であるもの
$(
"要素1 要素2:nth-child(指定番)"
)
要素1の子要素のうち指定個おきの要素が要素2であるもの
$(
"要素1 要素2:nth-child(an+b)"
)
<div> <p>1つ目のpタグ</p> <p>2つ目のpタグ</p> <p>3つ目のpタグ</p> <h6>間にh6タグ</h6> <p>4つ目のpタグ</p> <p>5つ目のpタグ</p> <p>6つ目のpタグ</p> </div> <script> $("div p:nth-child(5)").css("color","blue"); $("div p:nth-child(3n+1)").css("color","red"); </script>
1つ目のpタグ
2つ目のpタグ
3つ目のpタグ
間にh6タグ
4つ目のpタグ
5つ目のpタグ
6つ目のpタグ
要素1の子要素のうち要素2であるものの指定番目
$(
"要素1 要素2:nth-of-type(指定番)"
)
要素1の子要素のうち要素2であるものを指定個おき
$(
"要素1 要素2:nth-of-type(an+b)"
)
<div> <p>1つ目のpタグ</p> <p>2つ目のpタグ</p> <p>3つ目のpタグ</p> <h6>間にh6タグ</h6> <p>4つ目のpタグ</p> <p>5つ目のpタグ</p> <p>6つ目のpタグ</p> </div> <script> $("div p:nth-of-type(5)").css("color","blue"); $("div p:nth-of-type(3n+1)").css("color","red"); </script>
1つ目のpタグ
2つ目のpタグ
3つ目のpタグ
間にh6タグ
4つ目のpタグ
5つ目のpタグ
6つ目のpタグ
要素1の子要素のうち要素2のみであるもの
$(
"要素1 要素2:
only-child
"
)
<div> <p>1つ目のpタグ</p> <p>2つ目のpタグ</p> <p>3つ目のpタグ</p> <h6>間にh6タグ</h6> <p>4つ目のpタグ</p> <p>5つ目のpタグ</p> <p>6つ目のpタグ</p> </div> <div> <p>1つ目のpタグ</p> </div> <script> $("div p:only-child").css("color","red"); </script>
1つ目のpタグ
2つ目のpタグ
3つ目のpタグ
間にh6タグ
4つ目のpタグ
5つ目のpタグ
6つ目のpタグ
1つ目のpタグ
特定の文字列を含む要素
$(
"要素:contains('文字列')"
)
大文字と小文字は区別されます。
<ol class="class1" id="id1"> <li class="classA">Sample1</li> <li class="classA">Sample2</li> <li class="classA">Sample3</li> <li class="classA">Sample4</li> </ol> <script> $(".classA:contains('3')").css("color","red"); $(".classA:contains('sample1')").css("color","blue"); $(".classA:contains('Sample2')").css("color","blue"); </script>
- Sample1
- Sample2
- Sample3
- Sample4
下位要素を持つ要素
$(
"要素:parent"
)
下位要素を持たない要素
$(
"要素:empty"
)
<table border="1"> <tr><td></td></tr> <tr><td>A</td></tr> </table> <script> $("td:parent").css("background-color","yellow"); $("td:empty").css("background-color","blue"); </script>
A |
要素を含む要素
$(
"要素1:has(要素2)"
)
<div id="div1"> DIV1 <div id="div2" id="classA"> DIV2 <div id="div3" id="classA"> DIV3 </div> </div> <div id="div4" id="classA"> DIV4 <div id="div5" id="classA"> DIV5 </div> </div> </div> <script> $(".classA:has(#div3)").css("color","red"); </script>
DIV1
DIV2
DIV3
DIV4
DIV5
特定の属性を持つ要素
$(
"要素[属性]"
)
<input type="text" name="nameA" value="A"> <input type="text" name="nameB" value="B"> <input type="text" name="nameC" value="C"> <input type="text" value="D"> <script> $("input[name]").css("color","red"); </script>
特定の属性を持たない要素
$(
"要素:not([属性])"
)
<input type="text" name="nameA" value="A"> <input type="text" name="nameB" value="B"> <input type="text" name="nameC" value="C"> <input type="text" value="D"> <script> $("input:not([name])").css("color","red"); </script>
属性の値が一致する要素
$(
"要素[
属性='値'
]"
)
<input type="text" name="nameA" value="A"> <input type="text" name="nameB" value="B"> <input type="text" name="nameC" value="C"> <input type="text" value="D"> <script> $("input[name='nameB']").css("color","red"); </script>
属性の値が一致しない要素
$(
"要素[
属性!='値'
]"
)
<input type="text" name="nameA" value="A"> <input type="text" name="nameB" value="B"> <input type="text" name="nameC" value="C"> <input type="text" value="D"> <script> $("input[name!='nameB']").css("color","red"); </script>
属性の値が前方一致する要素
$(
"要素[
属性^='値'
]"
)
<input type="text" name="nameA" value="A"> <input type="text" name="nameB" value="B"> <input type="text" name="nameC" value="C"> <input type="text" value="D"> <script> $("input[name^='na']").css("color","red"); </script>
属性の値が後方一致する要素
$(
"要素[
属性$='値'
]"
)
<input type="text" name="nameA" value="A"> <input type="text" name="nameB" value="B"> <input type="text" name="nameC" value="C"> <input type="text" value="D"> <script> $("input[name$='B']").css("color","red"); </script>
属性の値が部分一致する要素
$(
"要素[
属性*='値'
]"
)
<input type="text" name="nameA" value="A"> <input type="text" name="nameB" value="B"> <input type="text" name="nameC" value="C"> <input type="text" value="D"> <script> $("input[name*='m']").css("color","red"); </script>
フォームの指定方法あれこれ
見出しの要素全て
$(
":header"
)
全てのフォーム要素
$(
":input"
)
指定方法 | 対象 |
:text |
テキストボックス |
:password |
パスワード入力ボックス |
:select |
セレクトボックス |
:radio |
ラジヲボタン |
:checkbox |
チェックボックス |
:file |
ファイル選択ボックス |
:submit |
送信ボタン |
:image |
画像ボタン |
:reset |
リセットボタン |
:button | 全てのボタン |
:hidden | 隠し要素 |
フォーム要素の状態を指定する
$(
"要素:has(状態)"
)
指定方法 | 対象 |
:enabled | 有効である |
:dsabled |
無効である |
:checked |
チェック状態である |
:selsected |
選択状態である |
:hidden |
非表示状態である |
:visible | 表示状態である |
:animated |
アニメーション状態である |
イベントリスナでの指定方法あれこれ
要素そのもの
$(
this
)
子要素を指定
$(
this
).children(
"要素"
);
親要素を指定
$(
this
).parent(
"要素"
);
カスタムイベントリスナを作ってしまえ
指定の値より大きい値の時にマッチするカスタムイベントリスナ
$(
"要素:gtval(指定値)
"
)
このようなイベントリスナは存在しませんが、JQueryでは、以下のコードを加えることで、自由に作ることができます。
$.extend($.expr[':'], {
リスナ: function (e,index,meta)
{
return [true/false]
}
});
<input type="text" name="nameA" value="0"> <input type="text" name="nameB" value="1"> <input type="text" name="nameC" value="2"> <input type="text" value="D"> <script> $.extend($.expr[':'], { gtval: function (e,index,meta) { var num = meta[3].match(/\d/g).join(""); if(isNaN($(e).val())) return false; if($(e).val() > num) return true; return false; } }); $("input:gtval(1)").css("color","red"); </script>