クラスセレクターを使ってみよう!
先ほどはIDセレクターを使いましたが、今度はクラスセレクターを使ってみましょう。
名前の通り、class属性の値で要素を探します。「属性」や「要素」が何だったか忘れてしまった人はエレメントセレクターのページや用語集を読み返しましょう。
「1_5.html」のソースを見てみましょう。
名前の通り、class属性の値で要素を探します。「属性」や「要素」が何だったか忘れてしまった人はエレメントセレクターのページや用語集を読み返しましょう。
「1_5.html」のソースを見てみましょう。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>jQuery入門研修|クラスセレクター実践</title> </head> <body> <a href="http://jquery.com/" id="foo" class="bar">jQuery</a> <ul> <li class="bar">List Item BAR</li> <li>List Item BAZ</li> <li class="bar">List Item QUX</li> <ul> <script src="../js/jquery-1.11.2.min.js"></script> <script> $(function() { // class"bar"を探そう! }); </script> </body> </html>
早速ですが、実践していきましょう。$関数に「文字列」を渡すとセレクターにな基本は変わりません。
そしてクラスセレクターを使う場合は、文字列の先頭に「.」を付けclass属性の値を指定します。
つまり、$関数に「.で始まる文字列」を渡すとクラスセレクターになります。
戻り値も同じです。$objが返ってきます。
それではclassがbarの$objをクラスセレクターで取得して、$objとインデックス0から2までのエレメントオブジェクトの4つをコンソールに出力してみましょう。
そしてクラスセレクターを使う場合は、文字列の先頭に「.」を付けclass属性の値を指定します。
つまり、$関数に「.で始まる文字列」を渡すとクラスセレクターになります。
戻り値も同じです。$objが返ってきます。
それではclassがbarの$objをクラスセレクターで取得して、$objとインデックス0から2までのエレメントオブジェクトの4つをコンソールに出力してみましょう。
$(function() { // class"bar"を探そう! var $bar = $(".bar"); console.log($bar); console.log($bar[0]); console.log($bar[1]); console.log($bar[2]); });
ここでのミソは$関数を何度も呼ばずに、変数に保持している点です。
セレクターを何度も呼ぶと、その度に該当する要素を探すので、今回の例だと、4回もドキュメント内を走査する処理が走ることになります。
逆に要素を追加・削除し、改めて該当する要素を探し直したい時は、再度セレクターを使う必要があります。
そして、「$bar」はただの変数名ですが、先頭に$を付けて「この変数はjQueryオブジェクトだよ」と示しています。
JavaScriptにおいて「$」はただの「文字」だと言うことを忘れないでください。
それではここをクリックしてコンソールを見てみましょう。
まずは$objのlengthを見てみましょう。ちゃんと3になってますか?次に、classがbarの要素が出力されていますか?
ちなみに$objにはeach関数が用意されています。each関数を使えば次のように書き換えることができます。
セレクターを何度も呼ぶと、その度に該当する要素を探すので、今回の例だと、4回もドキュメント内を走査する処理が走ることになります。
逆に要素を追加・削除し、改めて該当する要素を探し直したい時は、再度セレクターを使う必要があります。
そして、「$bar」はただの変数名ですが、先頭に$を付けて「この変数はjQueryオブジェクトだよ」と示しています。
JavaScriptにおいて「$」はただの「文字」だと言うことを忘れないでください。
それではここをクリックしてコンソールを見てみましょう。
まずは$objのlengthを見てみましょう。ちゃんと3になってますか?次に、classがbarの要素が出力されていますか?
ちなみに$objにはeach関数が用意されています。each関数を使えば次のように書き換えることができます。
$(function() { // class"bar"を探そう! var bar = $(".bar"); console.log(bar); bar.each(function(index, element) { console.log(element); }); });
each関数はセレクターに一致した要素群に対して繰り返し処理を行います。詳細が知りたい方は公式APIを見てください。
1つだけ、「element」はプレーンなエレメントオブジェクトであることに注意してください。jQueryオブジェクトではありません。本当によく間違えます。
1つだけ、「element」はプレーンなエレメントオブジェクトであることに注意してください。jQueryオブジェクトではありません。本当によく間違えます。
セレクターのまとめ
これまでに解説した3種類のセレクターについて内容をまとめます。
どれも使う機会が多いのでしっかりと覚えましょう。
どれも使う機会が多いのでしっかりと覚えましょう。
- $関数に文字列を渡すとセレクターになる
- $関数に文字列でタグ名を指定するとエレメントセレクターになる
- $関数に「#」で始まる文字列を指定するとIDセレクターになる
- $関数に「.」で始まる文字列を指定するとクラスセレクターになる
- セレクターの戻り値はjQueryオブジェクト
他にも様々なセレクターがありますが、それは追々ご紹介します。
次のページではセレクターで取得した要素にイベント処理を追加する方法を解説します。