正式版となった jQuery UI 1.8 が公開されました。先日投稿した Ajaxのタブ切り替えを使って、WPのサイドバーにある発リンク数を調整 という記事と重複する部分は多いですが、同様のタブコンテンツを jQuery 1.4.2 + UI Tabs 1.8 で再現したいと思います。

ファイル一式を用意
- デモ : http://jqueryui.com/demos/tabs/
- ダウンロード : http://jqueryui.com/download
1. ダウンロードのページに行くと、全ファイルにチェックが入った状態で待ち構えています。ただし、必要最低限のファイルだけ欲しいので、いったん全チェックを外します。
2. WidgetsにあるTabsだけにチェックを入れます。エフェクトなどの機能が欲しい方は、必要なコンポーネントにチェックを加えてください。
3. Tabs をチェックすると、動作に必要な「Core」と「Widget」にもチェックが入ります。あとは、 jQuery UI のバージョン選択と、必要があればテーマを選んでダウンロードします。
- テーマについて
-
テーマは、design a custom theme の左メニュー「Gallery」タブから選択できます。クリックすると、中央のタブにも反映されてイメージを掴むことができます。

好みのスタイルが見つかったら、「Roll Your Own」タブの [Download theme] をクリック。ダウンロードページのセレクトメニューにそのテーマが反映されます。
※このページでは、jQuery1.4.2、UI 1.8 で動作確認を行っています。なお、テーマはUI全体のものなので、テーマを選択してダウンロードすると、ファイル数が増加したりCSSが複雑になって目的のものを探すのが大変だったので、[No Theme] を選択しました。カッコいいのが揃っていましたが、自分でカスタマイズします…。
必要ファイルのアップロード
テーマを選択していない場合です。たくさんファイルがあって戸惑いましたが、Tab を機能させるのに必要なのは下記のとおりです。
jquery-ui-1.8.custom.min.js に、「Core」「Widget」「Tabs」が圧縮された状態でまとまっています。
なので、jQuery の Core は Google AJAX Libraries API を利用し、Cookie(最後に選択したタブを記憶)を利用しないで、css は自分で用意する場合、jquery-ui-1.8.custom.min.js だけアップロードすればOKです。
head 内の記述例
Google AJAX Libraries API 、Cookie、CSSを利用の場合。
<link rel="stylesheet" type="text/css" href="/js/jquery.ui.tabs.css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"> </script>
<script type="text/javascript" src="/js/jquery.cookie.js"></script>
<script type="text/javascript" src="/js/jquery-ui-1.8.custom.min.js"></script>
<script type="text/javascript">
$(function() {
$('#tabs').tabs({cookie: { expires: 30 } , cache: true });
});
</script>最後の実行コードは、#tabs というIDのついた要素内でスクリプトを実行し、クッキーの有効期限を30日(たぶん)、キャッシュを有効にする、という設定です。恐らく、最初の ul をナビゲーションタブと認識するのだと思います。
キャッシュを有効にすると、Ajaxで読み込んだページはキャッシュされ、同じページ内では再リクエストを行わずに済むので表示が速くなります。
ページ内の記述
WordPressサイドバーの例です。 ajax で読み込むページの a要素(6、7行目のリンク)は、javascript が実行されると [ #ui-tabs-1、#ui-tabs-2 ] というように、URLからページ内アンカーに置き換えられます。
なお、 <a title="Tag" herf="/tags"> のようにタイトル属性を与えると、そのタイトル名がフラグメント識別子(#)に変換されます。ただし、反映されるのは英数字のみで、日本語の場合は ui-tabs-1 のまま。
<div id="tabs">
<!-- タブナビゲーション -->
<ul>
<li><a href="#tabs-1">カテゴリー</a></li>
<li><a href="/tags" rel="nofollow">タグ</a></li>
<li><a href="/archives" rel="nofollow">アーカイブ</a></li>
</ul>
<!-- コンテンツ部分 -->
<div id="tabs-1">
<ul>
<?php wp_list_categories('title_li=&depth=1&use_desc_for_title=0'); ?>
</ul>
</div>
</div>JavaScript 実行後のDOMソース
<div id="tabs" class="ui-tabs ui-widget ui-widget-content ui-corner-all">
<!-- タブナビゲーション -->
<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">
<li class="ui-state-default ui-corner-top ui-tabs-selected ui-state-active"><a href="#tabs-1">カテゴリー</a></li>
<li class="ui-state-default ui-corner-top"><a href="#ui-tabs-1" rel="nofollow">タグ</a></li>
<li class="ui-state-default ui-corner-top"><a href="#ui-tabs-2" rel="nofollow">アーカイブ</a></li>
</ul>
<!-- コンテンツ部分 -->
<div id="tabs-1" class="ui-tabs-panel ui-widget-content ui-corner-bottom">
<ul>
<li class="cat-item cat-item-1"><a href='/catgory/1'>カテ1</a></li>
<li class="cat-item cat-item-2"><a href='/category/2'>カテ2</a></li>
<li class="cat-item cat-item-3"><a href='/category/3'>カテ3</a></li>
</ul>
</div>
<!-- display:none(ui-tabs-hide) で隠れている部分 -->
<div id="ui-tabs-1" class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"/>
<div id="ui-tabs-2" class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"/>
</div>たくさんclassが付きます…。タブに関係するのは(多分)5種類なので、これをベースにスタイルを追加(jquery.ui.tabs.css)すればOKなはずです。
.ui-tabs { /* 外枠 div */ }
.ui-tabs-nav { /* タブ ul */ }
.ui-tabs-selected { /* タブ ul li ハイライト(選択中のタブ) */ }
.ui-tabs-panel { /* コンテンツ部分 div*/}
.ui-tabs-hide { display: none !important; /* コンテンツ部分 div 非表示 */ }
- 動作サンプル
このサイトのトップページ右側下段、音楽のところで利用しています。
取っちゃいました…。- こちらもどうぞ
- シングルページのサイドバーに、Ajax利用のページング付きカテゴリーアーカイブを設置したい
