jQueryの$関数に関するメモ。
DOMを取得する関数$(‘●’)[1]の戻り値はDOM要素ではなく対応するjQueryオブジェクト。
jQueryオブジェクトは様々なプロパティ・メソッドの他にDOM要素自体の配列を持つ。
下記のHTMLコードを例にしてまとめる。
<html> <body> <p id="foo">パラグラフ0。</p> <p class="bar">パラグラフ1。</p> <p class="bar">パラグラフ2。</p> <p>パラグラフ3。</p> </body> </html>
$(‘p’)が返すjQueryオブジェクトは4つのDOM要素を配列として持つ。
$(‘p’)[0]は要素<p id=”foo”>パラグラフ0。</p>を得る。
$(‘p’)[1]は要素<p class=”bar”>>パラグラフ1。</p>を得る。
$(‘p’)[2]は要素<p class=”bar”>パラグラフ2。</p>を得る。
$(‘p’)[3]は要素<p>パラグラフ3。</p>を得る。
$関数が返すjQueryオブジェクトへの操作はDOMの配列全体に対して行われる。
下記コードはすべてのパラグラフの文字色をシルバーに設定する。
jQuery(function($) { $('p').css('color', 'silver'); )};
jQueryオブジェクトが持つDOM要素数はjQueryオブジェクトのlengthプロパティで取得する。
またjQueryループのeachを使うと個別のDOM要素を順に操作できる。下記のコードではパラグラフの文字色を段落ごとに設定している。
jQuery(function($) { $('p').each(function (i) { var hex = '#' + Math.pow(i,2) + Math.pow(i,2) + Math.pow(i,2); $(this).css('color', hex); }); });
セレクタでDOM要素を特定する。$(‘●’)はjQueryオブジェクトを返す。
生のDOM要素は戻り値であるjQueryオブジェクトが持つ配列に設定されている。
$('●')[N] Nはインデックス(整数) // または $('●').get(N) Nはインデックス(整数)
$関数はjQueryオブジェクトを返す。
一方jQueryオブジェクトのイベントハンドラ・イベントリスナーのコールバック関数や繰り返し処理(each・map)のthisはDOM要素そのもの。
上述のコードを使った例。
// コールバック関数の例 : thisはDOM, $(this)はjQueryオブジェクト $('p.bar').hover( function () { $(this).css('color', 'red'); }, function () { $(this).css('color', 'black'); } );
$('p').click(function (e) { var elem = e.target; // DOM要素が返る alert(elem.id); // DOM要素のプロパティ });
// ループの例 thisはDOM, $(this)はjQueryオブジェクト $('p').each(function () { // idの取得 alert(this.id); // DOMのプロパティ alert($(this).attr("id")); // jQueryオブジェクトのメソッド });
1. ●はセレクタ。jQueryのセレクタはjQuery 日本語リファレンスに掲載されている。
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。