« PHPのShift_JIS文字化け対策2 | トップページ | 複数ファイルを圧縮してダウンロードしよう »

2006年12月04日

jQueryを使ってみよう

prototype.jsを筆頭に沢山のAjaxフレームワークが開発されてきました。
これらのフレームワークは開発コストが大幅に削減されますので非常に助かります。
今日、紹介するjQueryはデザイナーさんに人気があるようなので、プログラマーの私は全く手を付けてませんでした。しかし、あるきっかけ(仕事です、、、)で使うことになり勉強してみたのですが、あまりの便利さにどっぷりハマっちゃいました^^;
「なるほど、デザイナーさんに支持されるわけだ、、、」
ということで、今日はjQueryの基本を紹介します。

今回の筆記で以下のサイトを参考にさせて頂きました。
Ajaxの最新レポートBlog

まずは、下記のサイトからjQueryをダウンロードしてください。
jQuery本家(英語)
*「Download jQuery」リンクをクリックするとダウンロードできます。

ダウンロードしたjQueryファイルを適当なディレクトリに入れます。
今回の説明ように[home]ディレクトリに[js]ディレクトリを作成してその中にjQueryを入れます。
更に[home]ディレクトリ直下に[index.html]を作ります。
最終的に以下のような構成になると思います。

[home]
 └─ index.html
 │
 └─[ js]
  └─ jquery.js

早速、jQueryを使ってみましょう。
[index.html]をテキストエディタで開いて、HTMLを適当に書いて行きます。
headタグ内にjquery.jsを読み込ませます。

<script src="./js/jquery.js" type="text/javascript"></script>

次にbodyタグ内にbuttonと空っぽのpタグを記述します。pタグにはid属性「message」を付けます。

<input type="button" value="jQueryテスト">
<p id="message"></p>

buttonタグを以下のように変更します。

<input type="button" value="jQueryテスト" onClick="$('#message').html('メッセージ');">

index.htmlをプレビューして、設置したボタンをクリックするとpタグの中に「メッセージ」というテキストが入ると思います。

jQueryでは、「$」を頭に付けて様々な処理を行います。
$後ろを()で囲んで、その中にid名やname・classの名前を入れます。
上記の例では、$('#message')はpタグのid="message"が対象になります。
class="message"であれば、

$('.message')

と記述します。
つまり、CSSと同じ記述方法でjavascriptを操作できるのです。
上記の例では、もちろん
$('p#message').html('メッセージ')

でも可能です。

.html()は、指定のタグ内のテキストを変更します。

$('#message').html('メッセージ')

上記の例では、「id="message"」のタグに「メッセージ」というテキストを書換なさいという意味になります。

次にAjaxを使ってみましょう。
[home]ディレクトリ内に「message.txt」を準備して、「初めてのjQuery!」等自由に入れてください。
index.html内に以下のスクリプトを記述します。

<input type="button" value="jQueryのAjax" onClick="$('#message').load('message.txt');">

message.txt内に書かれたテキストがpタグ内に表示されると思います。
.load()は指定URLからテキストを取り出して、指定のタグ内のテキストを書換ます。

今度はCSSを変更してみましょう。

$('#message').css('font-size', '20px')
このように第一引数にプロパティ、第二引数に値をセットするとCSSを変更できます。

更に、

$('body').css('background-color', '#CCCC33')

とすることで、bodyタグの背景色も変更することができます。

最後にAjaxで外部ファイルから取り出したテキストをHTMLにセットするのではなくて、PHPやCGIに値(postやget)を渡したり、javascriptの変数に格納して自由に扱う方法を紹介します。
index.html内のheadタグ内に以下のスクリプトを記述します。

<script type="text/javascript">
<!--
function jQueryAjax() {
  $.get('ajax_get.php', {message: '初めてのjQuery1', id: '104'}, jQueryRequest);
  $.post('ajax_post.php', {message: '初めてのjQuery2', id: '113'}, jQueryRequest);
}

function jQueryRequest(message, status) {
  alert(message + "\n" + "status:" + status);
}

//-->
</script>

4行目の

$.get('ajax_get.php', {message: '初めてのjQuery1', id: '104'}, jQueryRequest);

$.get()でフォームのGETを使えます。
第一引数に「URL」を指定して、
第二引数に「値」を指定
第三引数にはコールバックを指定します。
上記の例では、message「初めてのjQuery1」・id「104」という値を「ajax_get.php」にGETで渡しています。
「ajax_get.php」ファイルは、$_GET['message']と$_GET['id']でそれぞれの値を受け取れます。
コールバックは、URLを読み込んだ後に処理を行う関数名を指定します。

$.post('ajax_post.php', {message: '初めてのjQuery2', id: '113'}, jQueryRequest);
$.get()を$.post()に変えただけで、引数の意味は同じです。
function jQueryRequest(message, status) {
  alert(message + "\n" + "status:" + status);
}
これはコールバック(URLを読み込んだ後の処理)です。
第一引数にはURLで取得したテキストが入ります。
第二引数にはURLのステータスが入ります。
ステータスには「success」か「error」のどちらか入ります。
success:正常に処理された
error:処理中にエラーが発生した
指定したURLが存在しなかった場合などは、「error」が表示されます。

次にbodyタグ内に

<input type="button" value="messageをalertで出力" onClick="jQueryAjax();">

と記述します。
ボタンをクリックすると、GETから取得したテキストとPOSTから取得したテキストがalert()で表示されると思います。

ここで紹介したのはjQueryのほんの一部で、もっと沢山の機能があります。
また、勉強したら他の機能も紹介しようと思います。

・関連記事
prototype.jsの使い方
Yahoo! UIライブラリを使ってみよう
HTML_AJAXを使ってみよう

トラックバック

このエントリーのトラックバックURL:
http://www.s-memo.net/mt/mt-tb.cgi/24

この一覧は、次のエントリーを参照しています: jQueryを使ってみよう:

» [jQuery] 非同期通信 from おっさんのメモ帳
jQueryで非同期通信をするにはどうすればよいか調べてみました。非同期通信をし... [詳しくはこちら]

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)