よくリストタグ<li>にborderを指定するが「最後(最初)の行だけborderがいらない」とうパターンが多い。
わざわざ最後(最初)の<li>タグにだけスタイルを指定してborderを消すのも面倒だしCSS3の「:last-child」や「:first-child」は対応していないブラウザがあるので、悩んだ結果jQueryで消すのが一番簡単且つブラウザ対応も間違いないと思い、以下のようなスクリプトを作成しました。
わざわざ最後(最初)の<li>タグにだけスタイルを指定してborderを消すのも面倒だしCSS3の「:last-child」や「:first-child」は対応していないブラウザがあるので、悩んだ結果jQueryで消すのが一番簡単且つブラウザ対応も間違いないと思い、以下のようなスクリプトを作成しました。
リストの最後のborderを消す
■html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <body> <div id= "sample" > <ul> <li>1行目</li> <li>2行目</li> <li>3行目</li> </ul> <ul> <li>1行目</li> <li>2行目</li> <li>3行目</li> </ul> <ul> <li>1行目</li> <li>2行目</li> <li>3行目</li> </ul> </div> </body> |
■css
1 2 3 | #sample li { border-bottom : dotted 1px #ccc ; } |
■javascript
1 2 3 4 5 | $( function () { $( "#sample ul" ).each( function () { $( "li:last-child" ).css( 'border' , 'none' ); }); }); |
解説
style指定で<li>タグには破線のアンダーラインが付きます。
1 2 3 | #sample li { border-bottom : dotted 1px #ccc ; } |
次にjQueryの部分ですが、each(callback)は条件に当てはまる要素に対して繰り返し処理(callback)を行ないます。
今回の場合はID名「sample」の子要素「<ul>」が見つかる度に・・・
2 | $( "#sample ul" ).each( function () { |
最後の<li>タグからborderを消す、という処理を書いています。
3 | $( "li:last-child" ).css( 'border' , 'none' ); |
上記ソースの「:last-child」で”最後のひとつ”を指定してます。ちなみに「:first-child」だと”最初のひとつ”となります。