« 角丸画像を簡単に作る | メイン | 意欲を維持するヒント集 »

JavaScriptライブラリといえば jQuery(入門編)
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

こんにちわ。山下です。

最近、私の周りではJavaScriptライブラリといえば、jQuery の名前がまず最初に挙がってくるようになってきました。今回は、jQueryって何が便利なの?っていう人向けに、ポイントを掻い摘んで説明します。

1.名前空間を汚さない

他のJavaScriptライブラリとかだとStringとかArrayを直接拡張してたりしますが、jQueryはグローバルな名前空間を汚しません。eachとかmapのような便利な関数もすべてjQueryオブジェクトの属性として定義されています。

jQuery.each, jQuery.extend, jQuery.grep, jQuery.map, jQuery.merge, jQuery.trim, etc.

また、標準では $ にショートカットが割り当てられるのですが、jQuery.noConflict()と書くことで prototype.js などと混ぜて使えます。

<script src="prototype.js"></script>
<script src="jquery.js"></script>
<script type="text/javascript">
    jQuery.noConflict();
</script>


2.要素の選択がらくらく

これが私がjQueryを一番気に入っている理由なのですが、CSS 3と XPath をミックスしたような構文で要素を選択することができます。すべてのjQueryでの操作は、DOMからひとつまたは複数のノードを選択することから始まります。以下に要素選択の例を挙げますが、かなり直感的に理解できるのではないでしょうか。

jQuery('div.panel')
    class="panel"なすべてのdiv要素
jQuery('p#intro')
    id="intro"なすべての段落
jQuery('div#content a:visible')
    id="content"のdivの中のすべてのvisibleなリンク
jQuery('input[@name=email]')
    name="email"なすべてのinput要素
jQuery('table.orders tr:odd')
    class="orders"な奇数行
jQuery('a[@href^="http://"]')
    すべての外部リンク(http://で始まる) 
jQuery('p[a]')
  1つ以上のリンクを含む段落


3.メソッド・チェーン

2.で説明した要素の選択は、すべてjQueryオブジェクトが返ってきます。そして、そのオブジェクトのメソッドを実行した結果もjQueryオブジェクトが返ってきます。これはどういうことかというと、複数のメソッドを呼び出す必要がある時に何度もセレクタを書くことなく、シンプルに書けるということです。

例えば、id="message"の要素の背景色を赤に変更して、内容を'Hello!'に書き換えて表示するなんてことが下の1行で書けます。

jQuery('#message').css('background', 'red').html('Hello!').show();


4.イベント処理

click関数に引数を渡した場合はクリックされた際にその処理を行い、指定しなかった場合はクリックをシミュレートします。

jQuery('p').click(function() {
   jQuery(this).css('background-color', 'red');
});
    pタグをクリックしたら、背景を赤に変更
jQuery('p:first').click()
    最初の段落をクリックした動作を行う


次の例では、aタグにmouseoverとmouseoutのイベントを割り当てます。マウスカーソルが重なると背景色をオレンジに変更し、離れると白に変更します。hover()の最初の引数がmouseoverで2番目がmouseoutになります。

jQuery('a').hover(function() {
    jQuery(this).css('background-color', 'orange');
}, function() {
    jQuery(this).css('background-color', 'white');
});


one()関数は、1度だけ実行するイベントを割り当てます。最初に段落をクリックするとalertメッセージが表示されますが、もう一度クリックしても何も起こりません。

jQuery('p').one('click', function() { alert(jQuery(this).html()); });


5.Ajax

AjaxでHTMLの断片をサーバからGETして、divのinnerHTMLに流し込むのは、たったの1行で書けます。これだけです。

jQuery('div#intro').load('/some/fragment.html');

JSONデータもこんな感じで取得して自動的に変数に格納されるので、とても簡単です。

jQuery.getJSON('/some.json', function(json) {
    alert('JSON rocks: ' + json.foo + ' ' + json.bar);
});


6.プラグイン

jQuery自体は21KBしかないのですが、プラグインを使うことでjQueryのインスタンスオブジェクトに機能を追加することができます。jQuery Pluginsのページに、世界のユーザが作成した100以上の便利なプラグインが用意されているので、これを利用することができます。

私が以前書いたエントリ、
 簡単Ajaxライブラリ「jQuery」と便利なプラグインたち
も参考にして頂ければと思います。



以上、jQuery入門編と題して特徴を説明しましたが、もし興味を持ってくれる人がいれば次回はもう少し掘り下げていきたいと思います。


トラックバック

このエントリーのトラックバックURL:
http://www.unoh.net/mt32/unoh-mt32-ja-tb.cgi/944

この一覧は、次のエントリーを参照しています: JavaScriptライブラリといえば jQuery(入門編):

» jquery.jsとprototype.jsの干渉について from MovableTypeのススメ
実はThickBox3を導入してからAjaxカレンダーが表示されなくなってました... [詳しくはこちら]

» LightBoxとPrototypeが競合している from HOPEBRIDGE
LightBoxとPrototypeがバッテングしている模様です。 回避の方... [詳しくはこちら]

» jQueryってすごい - [JavaScript] from Web制作会社が届ける情報サイト:EXアーカイブ
JavaScriptライブラリといえばjQuery [詳しくはこちら]

コメント

3pandaともうします!

>もし興味を持ってくれる人がいれば次回はもう少し掘り下げていきたいと思います。
是非、お願いいたしますw

コメントありがとうございます。
興味を持ってくれる方がいらっしゃるようなので、次回はjQueryの話題を取り扱いたいと思います。
どうぞよろしくお願いします。

Ajaxの質問です。
load()を使ってとある.htmlをGETしてるのですが、どうも結果が実行回数ごとに増していくような気がするのです。ネットで調べてもなかなか見つからず このような形で知識をお借りしとうございます。


$("#hoge").load("fuga.html");
$("#hoge").ajaxComplete(function(){
alert("これが実行回数分表示する。");
});

ご迷惑でなかったらなにとぞお助けくださいませー

コメントを投稿