jQueryでWeb Formsアプリケーションのフィルタリングユーザーインターフェイスを作成する(前編)
ユーザーごとに折りたたみ/展開の状態を記憶させる方法
ダウンロード サンプルソース (798.6 KB)
filterUItitle <div>のクリック時に折りたたみ/展開状態を切り替える
現在の実装は確かにフィルタリングユーザーインターフェースを折りたたむようになっていますが、これを展開する方法がありません。filterUItitle <div>用のクライアントサイドのclickイベントハンドラが必要です。これでfilterUI <div>の表示(隠されている場合)と非表示(表示されている場合)を行います。また、filterUItitleのCSSクラスをexpandIconからcollapseIcon(またはその逆)に変更する必要があります。
jQueryを使用すると、このような機能を簡単に実装できます。太字で示した5行のJavaScriptをdocumentのreadyイベントハンドラに追加するだけで済むのです。
<script type="text/javascript">
$(document).ready(function() {
$('#filterUI').hide();
$('#filterUItitle').click(function() {
$('#filterUI').slideToggle(400);
$('#filterUItitle').toggleClass('expandIcon');
$('#filterUItitle').toggleClass('collapseIcon');
});
});
</script>
slideToggle()関数は、フィルタリングユーザーインターフェースの表示または非表示を400ミリ秒にわたる上下の動きとしてアニメーション化します。toggleClass(className)関数は、classNameを要素に追加するか(ない場合)、または削除します(ある場合)。そのため、上記の2行のtoggleClassでは、expandIconクラスまたはcollapseIconクラスがfilterUItitle <div>から削除され、他方のクラスが追加されます。
これで完了です。実際の動作を確認するには、本稿のサンプルファイルをダウンロードしてください。
これからの課題
ここで実装した機能には1つ問題があります。それは、ページが表示された時点でフィルタリングユーザーインターフェースがいつも折りたたまれた状態になっていることです。つまり、ユーザーがフィルタリングインターフェースを展開し、いったんそのページの表示をやめてから再び表示した場合に、フィルタリングインターフェースを改めて展開する必要があるということです。同様に、ページ上でのあらゆるポストバック(フィルタボタンのクリックやグリッドのソートなど)によってフィルタリングインターフェースが折りたたまれることになります。UpdatePanelを使用すれば、ポストバックを超えてフィルタリングインターフェースの折りたたみ/展開状態を維持することはできますが、複数のページ要求にまたがってユーザーの折りたたみ/展開選択が記憶されるわけではありません。
幸い、ちょっとしたAJAXの機能を利用すれば、ユーザーセッションの間じゅう折りたたみ/展開状態を記憶できます。この記事の後編では、このような機能の追加方法を説明します。
ではそのときまで、ハッピープログラミング!
参考資料
- jQuery.com:jQuery のホームページ(ダウンロードもここから)
- jQueryのチュートリアル
- AJAX Control Toolkit CollapsiblePanel Control
この記事は参考になりましたか?
既に会員の方はを行ってください。
- japan.internet.com翻訳記事連載記事一覧
- この記事の著者
-
japan.internet.com(ジャパンインターネットコム)
japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
Scott Mitchell(Scott Mitchell)
http://www.4guysfromrolla.com/ScottMitchell.shtml
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
