セレクターその9(first-child擬似クラス[CSS2])
特定のセレクターのうち最初に登場する要素のみを指定するセレクター。
ってことなんだけど、いまいちわかんねー。
サンプルではli要素を指定しているけど、liは連続していることが前提なのか?
と思ったので、ちょっと自分でも要素を追加してみた。
<html> <head> <script type="text/javascript" src="http://www.google.com/jsapi"></script> <script type="text/javascript">google.load("jquery", "1.3.2");</script> <script type="text/javascript"> $(function() { $("li:first-child").css("color","red"); //連続しているdiv要素に適用したつもりだが、hoge1,hoge2が青くならない。。なぜ? $("div:first-child").css("color","blue"); //divで括ったspan要素に適用すると「ほげ1」緑になるが、「ほげ2」は緑にならない。 $("span:first-child").css("color","green"); }) </script> </head> <body> <ul> <li>テキストテキストテキストテキストテキスト</li> <li>テキストテキストテキストテキストテキスト</li> <li>テキストテキストテキストテキストテキスト</li> <li>テキストテキストテキストテキストテキスト</li> </ul> <ul> <li>テキストテキストテキストテキストテキスト</li> <li>テキストテキストテキストテキストテキスト</li> <li>テキストテキストテキストテキストテキスト</li> <li>テキストテキストテキストテキストテキスト</li> </ul> <div>hoge1</div> <span>fuga1</span> <div>hoge2</div> <div>hoge3</div> <div> <span>ほげ1</span> <span>ほげ2</span> <a>ふが1</a> <span>ほげ3</span> </div> </body> </html>
これだとhoge1の文字が青くならない。(spanの方の「ほげ1」は緑色になる。)
「div:first-child」は、「divを選べ。但し、そのdivはノードの中の先頭要素になっていなければダメよ」という解釈でいいんかな。
そうするとhoge1をbodyの子要素として先頭に持ってくると適用されるはず!
<html> <head> <script type="text/javascript" src="http://www.google.com/jsapi"></script> <script type="text/javascript">google.load("jquery", "1.3.2");</script> <script type="text/javascript"> $(function() { $("li:first-child").css("color","red"); $("div:first-child").css("color","blue"); $("span:first-child").css("color","green"); }) </script> </head> <body> <!-- body要素の子要素として先頭要素になるように、ここに持ってきた! --> <div>hoge1</div> <ul> <li>テキストテキストテキストテキストテキスト</li> <li>テキストテキストテキストテキストテキスト</li> <li>テキストテキストテキストテキストテキスト</li> <li>テキストテキストテキストテキストテキスト</li> </ul> <ul> <li>テキストテキストテキストテキストテキスト</li> <li>テキストテキストテキストテキストテキスト</li> <li>テキストテキストテキストテキストテキスト</li> <li>テキストテキストテキストテキストテキスト</li> </ul> <span>fuga1</span> <div>hoge2</div> <div>hoge3</div> <div> <a>ふが1</a> <span>ほげ1</span> <span>ほげ2</span> <span>ほげ3</span> </div> </body> </html>
お〜、適用された!この解釈であってるっぽいぞ!