
パターンとライブラリで作るAjaxおいしいレシピ(5)
jQuery UIで実現! Ajaxで複数選択ドラッグ&ドロップ
アークウェブ株式会社
志田 裕樹
2008/3/3
| 本記事は2008年に執筆されたものです。jQueryやAjax全般の最新情報は「リッチクライアント & 帳票フォーラム」総合目次のカテゴリ「実践Ajax」や「Ajax技術解説」をご参照ください。 |
今回は「jQuery UI」のより進んだ活用例
■ jQueryのプラグイン「jQuery UI」とは?
- - PR -
今回紹介するjQuery UIは、JavaScript(Ajax)フレームワークjQueryのプロジェクトがjQuery用に開発している、以下の機能を提供するプラグインです。
- ドラッグ&ドロップなどのマウス操作の機能拡張
- ユーザーインターフェイスを改善するウィジェット(アコーディオン、日付入力、ダイアログ、スライダー、タブなど)
今回は、jQuery UIのドラッグ&ドロップ機能にフォーカスし、その使い方から、より進んだ活用例をサンプルを通じて説明していきたいと思います。
![]() |
| 図 jQuery UIのページ |
jQueryの基本的な利用の仕方については、連載第1回「jQueryを使ってTwitterをおいしくマッシュアップ」でも解説されていますので、こちらもご参照ください。
■ 今回のサンプル
まずは、今回のサンプルを見てみましょう。
| 今回のサンプル・プログラム(拡大表示はこちら、※Firebugを有効にしていると動作が鈍くなることがあります。また、サンプルのライセンスはGPL 2となります) |
編集部注:Firebugについて詳しく知りたい読者は、「Firebugとは? Webサイト作成にどう役立つのか?」をご参照ください。
このサンプルには次のような機能があります。
- ファイルをドラッグで複数選択できる
- 選択したファイルはドラッグ&ドロップでディレクトリ内を移動したり
- 別のディレクトリに移動することができる
ドラッグ&ドロップを利用し、より直感的で軽快なユーザーインターフェイスを提供することができます。
■ jQuery UIが提供するドラッグ&ドロップ機能
jQuery UIはドラッグ&ドロップに関連して次の機能を提供しています(※下記リストはインデックスになっています)。
- Draggables:DOM要素をドラッグできるようにする
- Droppables:draggableとなった要素を別のDOM要素にドロップできるようにする
- Selectables:指定したDOM要素の子要素をドラッグで複数選択できるようにする
- Sortables:指定したDOM要素の子要素の順番をドラッグ&ドロップで入れ替えられるようにする
- Resizeables:指定したDOM要素のサイズをドラッグ&ドロップで変更できるようにする
今回のサンプルは、上記のうちDraggables、Droppables、Selectablesを組み合わせて作成しています。以下では、その3つについてそれぞれの使い方を解説し、その後応用編としてサンプルの内容を解説していきます。
今回は誌面の関係上Sortables、Resizeablesの解説はできませんが、いずれも基本的な利用方法はDraggablesなどと同じですので、本記事を一読されれば簡単に利用方法が理解できると思います。とても有用なライブラリですので、ぜひ試してみてください。
■ jQuery UIをダウンロードして準備
jQuery UIを使うための準備をしておきましょう。jQuery UIのサイトから、jQueryのプラグインをダウンロードします。2008年2月26日の原稿執筆時現在では、「jquery.ui-1.5b.zip」というファイルがダウンロードできます。このファイルを展開し、Webサーバにアップロードしておきましょう。
ドラッグを可能にする「Draggables」
まず、Draggablesの最もシンプルな使用例を見てみましょう。Draggalbesは、DOM要素をドラッグできるようにする機能を提供します。Draggablesを使うためには、jquery.ui-1.5b.zipを解凍して現れるファイルのうち以下のファイルを<head>タグ内で、<script>タグを使って読み込む必要があります(参考:「UI/Draggables - jQuery JavaScript Library」の「Dependancies」の部分)。
<script type="text/javascript" |
そのうえで、下記のHTMLのようにドラッグを可能にしたいDOM要素に、draggable()メソッドを呼び出すだけで、<div id='target'>の要素がドラッグ可能になります。
<div id='target'>ドラッグ可能</div> |
| Draggablesのシンプルな例(「ドラッグ可能」というラベルをドラッグしてください。拡大表示はこちら) |
draggable()が実行されたDOM要素は、下記のように「ui-draggable」というクラスが自動的に付与されます。
<div id="target" class="ui-draggable">ドラッグ可能</div> |
■ Draggablesに指定可能なオプション
draggable()の第1引数に次の例のように、ハッシュ形式のオプションを指定することでドラッグ時の挙動をさまざまにカスタマイズできます。
<div id='target'>ドラッグ可能</div> |
指定可能なオプションは非常に多いため、ここでは一部だけ紹介します。詳しくは「UI/Draggables/draggable - jQuery JavaScript Library」の「options」タブを参照してください。また、各オプション指定ごとのサンプルは、「Draggable Demo」を参照してください。
| 表1 Draggablesの主なオプション | ||
| オプション名 | 指定する値 | 説明 |
| snap | BooleanまたはSelector | ドラッグ時このオプションに指定したDOM要素に接近すると、その要素に吸い付くように接するようになる。「true」と指定すると、'.ui-draggable'というセレクタに一致する要素に「吸い付き」が発生するようになる(「吸い付き」のサンプルとして「Draggable Demo」の「2. Clone as helper」を見るとどういう動作か分かりやすい) |
| containment | Elementまたは Selector |
指定した要素の内側の範囲でのみドラッグ可能にする |
| grid | [Integer x, Integer y] |
指定したサイズの格子上で「吸い付き」が発生 |
| helper | "original"または "clone"または Function |
「original」を指定すると、draggable()に指定された要素がそのままヘルパ(ドラッグ中にマウスに合わせて動く要素)になる(デフォルト)。「clone」はdraggable()に指定された要素を複製し、ヘルパとして使用。Functionを指定すると、その関数が返すDOM要素がヘルパとして使用される |
| start | Function(e, ui) | ドラッグ開始時のイベントハンドラを指定。第1引数は、通常のイベントハンドラと同様で、第2引数については後述 |
| drag | Function(e, ui) | ドラッグ中のイベントハンドラを指定 |
| stop | Function(e, ui) | ドラッグ終了時のイベントハンドラを指定 |
引き続き次ページでは、DraggablesやDroppables、Selectablesについて解説します。
| 1-2-3-4 |
| INDEX | ||
| パターンとライブラリで作るAjaxおいしいレシピ(5) jQuery UIで実現! Ajaxで複数選択ドラッグ&ドロップ |
||
| Page1 今回は「jQuery UI」のより進んだ活用例 ドラッグを可能にする「Draggables」 |
||
| Page2 ドロップを可能にする「Droppables」 ドラッグによる複数選択を可能にする「Selectables」 |
||
| Page3 今回のサンプルの基本的な情報 jQuery UIのテクニックがどのように使われたか |
||
| Page4 複数ファイルのドラッグの実装 ドラッグ&ドロップによるユーザビリティの向上を |
||
| リッチクライアント&帳票 全記事一覧へ |
ホワイトペーパー(TechTargetジャパン)
- いまさら聞けないTwitter超入門−@IT記事も対応なう (2010/2/4)
Twitterは最近話題のつぶやきツール。基本的な使い方から、iPhoneアプリの使い方、RTの解説、4人のご意見番の活用例や感想まで - HTML5は開発者側の都合。ユーザーには関係ない (2010/2/2)
3つのレンダリングエンジンを載せている“国産”ブラウザベンダは、HTML5やWeb/ブラウザの進化について何を語るのか - テキスト・フォント周りをキレイに見せるCSS、13選! (2010/1/29)
無数にあるCSSのプロパティを大まかに分類し、1つずつ紹介していく本連載。初回は、テキスト・フォント周りについて - OpenGL ESが大変な3Dアプリ開発を楽にするUnity (2010/1/27)
iPhoneゲーム開発に必須のOpenGL ES。そのコーディングに手こずっている方に有用なツールを紹介し簡単なサンプルを作成します
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | 企業の仮想化に足りない“発想”とは? 仮想化運用管理のキモは意外なところに! New! |
| ◆ | 操作もマニュアルも分かりやすい! ユーザー視点で開発されたPC管理ツール New! |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |

| ◆ | セキュリティを知り尽くす上野氏が登壇! @ITメールソリューションLive! in Tokyo |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
| ◆ | 世界に通用するストレージの作り方とは? 製品に込めた思いを富士通の開発者に聞く |

| ◆ | OSSで手間も時間も、障害も減った―― 「マピオンの事例」オープンソース活用法 |
| ◆ | 「ノートPCの持ち出し禁止」で大丈夫? 情報漏えいを防ぐ管理手法とインフラは? |
| ◆ | 1日の処理を1秒に――MySQLの達人が語る 「コスト削減」できるチューニング |

| ◆ | ドキュメント作成を自動化して、SEの作業 効率を大幅アップ! Visio 2007の魅力 |
| ◆ | 急速に広がるHyper-Vでのサーバ仮想化 そのベストプラクティスをデルが解説 |
| ◆ | @IT主催セミナーで語られた、「担当者に 求められるセキュリティ対策」をレポート |

| ◆ | @IT「Windows 7」 特設サイトオープン! 最新情報・移行ノウハウを公開しています |







