• 検索結果がありません。

著 作 権 このドキュメントに 記 載 されている 情 報 は このドキュメントの 発 行 時 点 におけるマイクロソフトの 見 解 を 反 映 したものです マイクロソフトは 市 場 の 変 化 に 対 応 する 必 要 があるため このドキュメントの 内 容 に 関 する 責 任 を 問 われな

N/A
N/A
Protected

Academic year: 2021

シェア "著 作 権 このドキュメントに 記 載 されている 情 報 は このドキュメントの 発 行 時 点 におけるマイクロソフトの 見 解 を 反 映 したものです マイクロソフトは 市 場 の 変 化 に 対 応 する 必 要 があるため このドキュメントの 内 容 に 関 する 責 任 を 問 われな"

Copied!
11
0
0

読み込み中.... (全文を見る)

全文

(1)

Visual Studio Do-It-Yourself シリーズ

第 15 回 jQuery

(2)

著作権

このドキュメントに記載されている情報は、このドキュメントの発行時点におけるマイクロソフトの見解を反映 したものです。マイクロソフトは市場の変化に対応する必要があるため、このドキュメントの内容に関する責任 を問われないものとします。また、発行日以降に発表される情報の正確性を保証できません。 このホワイトペーパーは情報提供のみを目的としています。明示、黙示、または法令に基づく規定に関わらず、 これらの情報についてマイクロソフトはいかなる責任も負わないものとします。 この文書およびソフトウェゕを使用する場合は、適用されるすべての著作権関連の法律に従っていただくものと します。このドキュメントのいかなる部分も、米国 Microsoft Corporation の書面による許諾を受けることな く、その目的を問わず、どのような形態であっても、複製または譲渡することは禁じられています。ここでいう 形態とは、複写や記録など、電子的な、または物理的なすべての手段を含みます。ただしこれは、著作権法上の お客様の権利を制限するものではありません。 マイクロソフトは、この文書に記載されている事項に関して、特許、申請中特許、商標、著作権、および他の知 的財産権を所有する場合があります。別途マイクロソフトのライセンス契約上に明示の規定のない限り、このド キュメントはこれらの特許、商標、著作権、またはその他の知的財産権に関する権利をお客様に許諾するもので はありません。 別途記載されていない場合、このドキュメントで使用している会社、組織、製品、ドメイン名、電子メール ゕ ドレス、ロゴ、人物、場所、出来事などの名称は架空のものです。実在する商品名、団体名、個人名などとは一 切関係ありません。

© 2010 Microsoft Corporation. All rights reserved.

Microsoft、Windows、Visual Studio、Visual Studio ロゴ、は、米国 Microsoft Corporation の米国および その他の国における登録商標または商標です。他のすべての商標は、それぞれの所有者の財産です。

(3)

ASP.NET Do-It-Yourself 第 15 回は、jQuery について学習します。jQuery は、もともと John Resig 氏に よって開発されたオープンソースのライブラリで、JavaScript ライブラリとしては比較的後発のものですが、 以下のような特長から多くの開発者の支持を集め、急速に普及しました。

・ 「Write Less, Do More」 (より少ないコードでより多くのことを) がモットー ・ Internet Explorer 、Firefox、Safari、Opera、Chrome などの主要ブラウザに対応

・ 文書ツリーの操作からゕニメーション効果、Ajax 対応まで、クライゕントサイド開発に関わる機能を総合 的にサポート

・ にも関わらず、とても軽量 (サイズは 26 KB)

・ 高機能な UI 機能を提供する jQuery UI をはじめ、拡張プラグインが豊富

マイクロソフトでも 2008 年 10 月から正式に jQuery のサポートを開始しており、ASP.NET 4 でも標準的 な JavaScript ライブラリとして採用しています。今後、ASP.NET 環境で Ajax 開発を行う場合、ASP.NET AJAX と共に jQuery の理解は欠かせないものとなっていくことでしょう。

この jQuery について、今回は以下の内容について学習していきます。

・ Visual Studio で jQuery を利用する方法 ・ jQuery による基本的な DOM 操作

・ jQuery による Ajax プログラミングの基本

■Visual Studio で jQuery を利用する方法

冒頭でも述べたように、Visual Studio 2010 では jQuery を標準でサポートしています。(「空の~」でない) Web サイト プロジェクトを新たに作成してみましょう。できたプロジェクトをソリューション エクスプロー ラーから確認してみましょう。

(4)

/Scripts フォルダ配下に、デフォルトで jQuery の実行フゔイルが配置されていることが確認できます。それ ぞれのフゔイルの概要は、表の通りです。 No. ファイル名 概要 1 jquery-1.4.1.js 圧縮なしのコメント/改行付き jQuery ソース 2 jquery-1.4.1.min.js 圧縮された jQuery ソース (コメント/改行などは除去) 3 jquery-1.4.1-vsdoc.js ドキュメンテーション コメントを含む jQuery ソース 本番環境で jQuery を動作させるのに最低限必要であるのは 2. のみです。1. 、3. もソースコードの内容は同 じですが、利用の目的が異なります。1. は改行やコメントが入って読みやすい状態になっていますので、開発 時に jQuery のソースを確認するために利用できます。3. は Visual Studio で jQuery のインテリセンス機 能を動作させるために必要なフゔイルです。開発時は、デフォルトで用意された 3 種類の .js フゔイルを削除 せずに、そのまま利用するようにすると良いでしょう。

■jQuery のインテリセンスを有効化する

Visual Studio のソース ビューで jQuery のインテリセンス機能を有効化するには、以下の方法があります。

(1) jQuery をページにインポートする

<script> タグ、または、ScriptManager コントロールで jQuery への参照を追加します。これらは、いずれ も jQuery をページで利用するために必要な手続きです。具体的には、以下のようなコードを追加します。

(5)

<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>

または、

<asp:ScriptManager ID="manager" runat="server"> <Scripts> <asp:ScriptReference Path="~/Scripts/jquery-1.4.1.min.js" /> </Scripts> </asp:ScriptManager> (2) <reference> タグで宣言する 独立した .js フゔイルから jQuery を利用する場合には、以下のようにスクリプト フゔイルの先頭で <reference> コメント タグを追加します。 /// <reference path="jquery-1.4.1.min.js"/> (1) (2) いずれかの操作を行った状態で、「$(‘*’).」 とタイプしてみると、以下の図のように jQuery で利用で きるメソッドが候補表示され、インテリセンス機能が有効になっていることが確認できます。 もちろん、メソッドの引数を入力していくと、メソッドのシグニチャに関する情報も表示されます。

(6)

■jQuery の基本

jQuery は実にさまざまな機能を備えていますので、本稿でその機能を網羅することは困難です。しかし、以下 のテーマについて理解しておくことで、今後、jQuery を学習していく上でも理解が早まるはずです。 ・ $ 関数 ・ メソッド チェーン ・ イベント リスナ ・ Ajax 通信

●CSS セレクタで目的の要素を取得する - $ 関数 -

$ 関数は、文書内の要素を取得するための関数で、jQuery のもっとも基本的で、特徴的な機能でもあります。 jQuery プログラミングのほとんどは、まず $ 関数の呼び出しから始まることからも、$ 関数の理解は jQuery を理解する第一歩と言って良いでしょう。

まずは、具体的なサンプルから見てみましょう。以下は、「id 属性が “list” である <ul> 要素配下から、class 属性が ”home” である <img> 要素を取り出し、2 秒かけてサイズを大きくする」サンプルです。

<ul id="list">

<li><img src="images/HomePremium.jpg" class="home" alt="Home Premium" /></li> <li><img src="images/Professional.jpg" class="pro" alt="Professional" /></li>

<li><img src="images/Ultimate.jpg" class="ultimate" alt="Ultimate" /></li> </ul>

(7)

<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> <script type="text/javascript">

$('ul#list img.home').animate({ width: 130, height: 130 }, 2000); </script> サンプルの実行結果は、以下の通りです。目的の画像を特定し、ゕニメーションさせるという機能がわずかに 1 行のコードで実装できてしまうのです。 → 動作が確認できたところで、$ 関数の詳細について見てみましょう。$ 関数の最大のポイントは要素抽出の条件 を CSS セレクタで指定できるという点です。CSS セレクタとは、CSS スタイルを特定するための記法のこと です。CSS 開発に慣れた人であれば新しい記法を覚える必要がないのはもちろん、要素特定の表現力に優れて おり、複雑な抽出条件もごく短いコードで表現できます。

たとえばサンプルでは、 ”ul#list img.home” の部分が CSS セレクタによる表現です。”ul#list” は「id 属性 が “list” である <ul> 要素」を、空白区切りでうしろに続く “img.home” は「その配下の、class 属性が “home” である <img> 要素」を意味します。

(8)

jQuery オブジェクトが表す要素群に対してゕニメーション効果を適用するためのメソッドです。この例では、 2 秒 (2000 ミリ秒) かけて画像の縦横サイズを 130 × 130 に変化させています。ここで、jQuery では複数 の要素を処理する場合にも、ループ処理を記述する必要がない点に注目してください。jQuery オブジェクトは、 内部的にすべての要素セットに対して処理を適用するためです。

●処理を連鎖的に記述できる - メソッド チェーン -

jQuery のメソッドの大部分は戻り値として jQuery オブジェクトを返します。メソッド チェーンとは、jQuery のこの性質を利用して、関係するメソッドをチェーン (鎖) のようにドット演算子で接続していく記法のことで す。

たとえば、先ほどのサンプルでサイズ変更した後、3 秒かけてスライド ゕップし、更にその後の 3 秒でスライ ドダウンするように書き換えてみましょう。

<script type="text/javascript">

$('ul#list img.home').animate({ width: 130, height: 130 }, 2000) .slideUp(3000).slideDown(3000);

</script>

メソッド チェーンを利用することで、一連の処理をまとめて記述できるので、コードがシンプルになります。 のみならず、$ 関数によって得られた要素セットをいちいち変数に格納する必要がなくなりますので、名前空間 の汚染を最小限に抑えられます。

(9)

●jQuery によるイベント処理

jQuery によるイベント処理は単純です。以下は、先ほどのサンプルを書き換えて、(ページロード時ではなく) ボ タンをクリックしたタイミングでゕニメーション処理を実行する例です。

<ul id="list">

<li><img src="images/HomePremium.jpg" class="home" alt="Home Premium" /></li> <li><img src="images/Professional.jpg" class="pro" alt="Professional" /></li>

<li><img src="images/Ultimate.jpg" class="ultimate" alt="Ultimate" /></li> </ul>

<input type="button" value="ゕニメーション実行" />

<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> <script type="text/javascript">

$(':button').click(function() {

$('ul#list img.home').animate({ width: 130, height: 130 }, 2000) .slideUp(3000).slideDown(3000);

(10)

</script> イベントに応じて実行されるイベント リスナを定義するには、「$(セレクタ式).イベント名(イベントリスナ)」 の形式で定義するだけです。ここでは$(‘:button’) (すべてのボタン) に対して click メソッドを呼び出してい ますので、イベント リスナはボタンがクリックされたタイミングで呼び出されます。イベント名では、click の 他にも change、dblclick、focus、keypress など、基本的なイベントを指定できます。

●jQuery による Ajax 通信

最後に、jQuery を利用した Ajax 通信について見てみましょう。以下のサンプルは、[時刻表示] ボタンをクリ ックすると、サーバサイドから現在時刻を読みだして、ページの下部に反映します。 → サーバサイドで現在時刻を返すコードは、以下の通りです。フゔイル名は CurrentTime.aspx としておきます。 <%@ Page Language="C#" %> <%= DateTime.Now.ToString(); %> CurrentTime.aspx にゕクセスし、ページに現在時刻を反映させるコードは、以下の通りです。 <form>

<input type="button" value="時刻表示" /> <div id="result"></div>

</form>

<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> <script type="text/javascript">

// (2) キャッシュを無効にする $.ajaxSetup({ cache: false });

(11)

// (1) ボタン クリック時に現在時刻をリフレッシュ $(':button').click(function() { $('div#result').load('CurrentTime.aspx'); }); </script> (1) はボタン クリック時に呼び出される click イベント リスナを定義しています。load メソッドは、指定さ れた URL に対して非同期通信を行い、その結果を現在の要素 (ここでは id 属性が “result” である <div> 要素) に対して反映させます。 ただし、Internet Explorer 環境ではキャッシュ機能が働いて、2 度目以降のリクエスト結果が正しく反映され ません。そこで (2) でキャッシュを無効化しているわけです。$.ajaxSetup メソッドは、Ajax に関わるオプ ションを設定します。cache パラメータは、ブラウザによるコンテンツ キャッシュを有効にするかどうかを決 定します。

■まとめ

今回は、Visual Studio 環境で jQuery を利用する方法、及び、jQuery の基本的な用法について学習しました。 jQuery の機能は多岐にわたりますが、まずは本稿の内容をきちんと理解しておけば、今後の学習の確かな基盤 ともなるはずです。その他の機能については、以下の記事も参考になりますので、合わせて参照してみてくださ い。

jQuery 逆引きリフゔレンス (http://www.atmarkit.co.jp/fdotnet/jqueryref/index/)

参照

関連したドキュメント

「文字詞」の定義というわけにはゆかないとこ ろがあるわけである。いま,仮りに上記の如く

市場を拡大していくことを求めているはずであ るので、1だけではなく、2、3、4の戦略も

従って、こ こでは「嬉 しい」と「 楽しい」の 間にも差が あると考え られる。こ のような差 は語を区別 するために 決しておざ

する愛情である。父に対しても九首目の一首だけ思いのたけを(詠っているものの、母に対しては三十一首中十三首を占めるほ

この 文書 はコンピューターによって 英語 から 自動的 に 翻訳 されているため、 言語 が 不明瞭 になる 可能性 があります。.. このドキュメントは、 元 のドキュメントに 比 べて

これらの先行研究はアイデアスケッチを実施 する際の思考について着目しており,アイデア

の知的財産権について、本書により、明示、黙示、禁反言、またはその他によるかを問わず、いかな るライセンスも付与されないものとします。Samsung は、当該製品に関する

点から見たときに、 債務者に、 複数債権者の有する債権額を考慮することなく弁済することを可能にしているものとしては、