ラベル tab の投稿を表示しています。 すべての投稿を表示
ラベル tab の投稿を表示しています。 すべての投稿を表示

2011年1月18日火曜日

jQuery UI Tabsでタブのリンクを静的リンクにする方法

jQuery UI Tabsでタブのリンクに普通のURLを書くと、ページ遷移なしでそのURLのHTMLを読み込んでタブ内のコンテンツとして表示してくれる。スムーズでよいが、そのままでは静的なリンクにはできない。

また、タブのリンクのURLをハッシュ(「#」で始まる文字列で、要素のidを指定する)にすると、ページ内の該当要素のみをタブ内のコンテンツとして表示してくれるが、別のページへの遷移としては使えない。


なので、タブの見た目だけを使いたくて、リンクは普通に静的リンクにしたい場合はこんな感じにする。

page1.html

<div id="tabs">

<ul>
<li><a href="#tab-content">タブ1に表示するラベル</a></li>
<li><a href="page2.html">タブ2に表示するラベル</a></li>
</ul>

<div id="tab-content">
ページの内容
</div>

</div>

page2.html
<div id="tabs">

<ul>
<li><a href="page1.html">タブ1に表示するラベル</a></li>
<li><a href="#tab-content">タブ2に表示するラベル</a></li>
</ul>

<div id="tab-content">
ページの内容
</div>

</div>

JavaScript
$('#tabs').tabs({
    //Ajaxで読み込むのを阻止
    select: function(event, ui) {
        var url = $.data(ui.tab, "load.tabs");
        if (url) {
            location.href = url;
            return false;
        }
        return true;
    },
    //選択状態にするタブのindex
    selected: 0 // ← 1つ目のタブなら0、2つ目のタブなら1というように動的に変える
});

ポイント
  • tabs()のselectオプションでタブクリック時は普通にページ遷移するようにする
  • tabs()のselectedオプションで表示中のページのタブを選択状態にする
  • 表示中のページのタブのhref属性はURLではなくハッシュ(#xxxx)にすることにより、そのページのコンテンツを表示する


参考

2009年7月4日土曜日

Firefox3.5で最後のタブを閉じてもWindowを閉じないようにする方法

Firefox3.0から3.5にUpdateしたら、全てのタブを閉じたときにFirefoxのWindow自体も閉じるようになってしまった。
(タブバーは常に表示するようにしている。)

これでは使いにくいので調べた。

Closing the only tab closes the windowにあるとおり、about:configで browser.tabs.closeWindowWithLastTab をfalseにすると、3.0までと同じように空のタブを残してくれるようになった。

どうも3.5がBeta版の時から論議が交わされてきた設定らしく、同じように不満を持つ人も少なくないようだ。

2009年3月19日木曜日

Googleの CDNを使って jQuery UI Tabsを使う例

探してみたら、GoogleはCSSもホスティングしていた。
(jQuery UIのDemoがどこからCSS読み込んでるかを見てみてみたら、発見した。)


CSS&JavaScript

<link type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.0/themes/blitzer/jquery-ui.css" rel="stylesheet" />

<script src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("jquery", "1");
google.load("jqueryui", "1");
google.setOnLoadCallback(function(){ $("#tabs").tabs() });
</script>
テーマはjQuery UI - ThemeRollerから選ぶ。(上記では"blitzer"。)
JavaScriptも静的読み込みにした方がレスポンスは良さそう。


HTML
<div id="tabs">

<ul>
<li><a href="#tab1">タブ1に表示する文字列</a></li>
<li><a href="#tab2">タブ2に表示する文字列</a></li>
<li><a href="#tab3">タブ3に表示する文字列</a></li>
</ul>

<div id="tab1">タブ1の内容</div>
<div id="tab2">タブ2の内容</div>
<div id="tab3">タブ3の内容</div>

</div>


関連記事:floatingdays: jQuery UI Tabsでタブのリンクを静的リンクにする方法


参考

ブログ アーカイブ

tags