アンケートご協力のお願いgihyo.jpでは,2010年度に向けて豪華プレゼントが当たる読者属性アンケートを実施しております。ご協力ください。

gihyo.jp » WEB+DESIGN STAGE » 連載 » もっと便利に!jQueryでラクラクサイト制作(実践サンプル付き) » 第8回 タブプラグインを作ってみよう(後編)

もっと便利に!jQueryでラクラクサイト制作(実践サンプル付き)

第8回 タブプラグインを作ってみよう(後編)

前回つくったタブパネルスクリプトをもとにして,タブプラグインを作ってみましょう。プラグインを作る,というと何か難しいことのように聞こえるかもしれません。前回作ったタブパネルスクリプトのように,なにも難しいことはありません。まずはプラグインについて少し考えてみましょう。

jQueryプラグインについて

前回の始めに言及したように,プラグインとは,既に完成しているJavaScriptファイルを読み込み,実行するだけで簡単に利用できるものを指すことにします。

例えば,jQueryプラグインは通常以下のようにして実行できるようになっていると思います。

プラグイン(メソッド)の実行

jQuery(function(){
    $('div.tabArea').tabPanel();
    // 対象のjQueryオブジェトに対してメソッドを実行する
});

$('div.tabArea')に対して,tabPanelというメソッドを実行するという意味ですね。メソッドを実行するだけで,ある程度の機能を提供できれば,それは立派なプラグインです。

function関数とメソッド

function関数

まずはメソッドについておさらいをしましょう。JavaScriptでは,何か機能をまとめるときに,functionという関数を使います。もっとも簡単なfunctionは以下のようなものです。sample()を実行すると,FirebugのConsoleに「Hello world」という文字列が表示されるはずです。

functionの例

function sample(){
    alert('Hello world');
}
 
sample(); // 実行する

functionの例 実行結果

functionの例 実行結果

メソッド

メソッドとは,あるオブジェクトに対して実行する関数を指します。jQueryプラグインにおけるメソッドの特徴として,関数と違うのは,あるオブジェクトをthisというキーワードで受け取ることができる,ということです。

例をあげてみます。

メソッドの例

(function($){
    $.fn.sample = function(){
        console(this);
    }
})(jQuery);
 
jQuery(function($){
    $('div').sample(); // メソッドを実行する
});

メソッドの例 実行結果

メソッドの例 実行結果

jQuery(function($){ ~ });と(function($){ ~ })(jQuery);

jQuery(function($){ ~ });

jQueryのメソッドや処理を実行する場合は,この中に記入します。window.onloadよりも早いタイミング,DOM Readyの段階で処理が実行されます。

(function($){ ~ })(jQuery);

カプセル化(隠蔽)と言い,最初の($)を一番最後の(jQuery)として認識させます。

実行するものはjQuery(function($){});にまとめて入れてしまえばいいのですが,プラグインなど,そのファイル単体で実行予定がないものはjQuery(function($){});に入れる必要はありません。そのまま書いてしまうと,他の場所で$を使っている場合に干渉してしまうので,jQueryプラグインを作成する際には,(function($){})(jQuery);内に入れると,その中では$はjQueryとして認識され,安全に定義することができます。

タブパネルスクリプトの関数化とメソッド化

前回作ったスクリプトは以下ですが

タブパネルスクリプト - JS

jQuery(function($){
    var tabArea = $('div.tabArea');
    var tabPanel = $('div.tabPanel',tabArea);
    var tab = $('ul.tab li',tabArea);
    
    var tabSet = function(target){
        var targetTabId = $('a',target).attr('hash');
        
        tab.removeClass('active');
        tabPanel.hide();
        $(target).addClass('active');
        $(targetTabId).show();
    }
    
    tab.click(function(){
        tabSet(this);
        return false;
    }).each(function(){
        if($(this).hasClass('active')){
            tabSet(this);
        }
    });
    
    if(tabPanel.filter(':visible').length!=1){
        tab.eq(0).addClass('active');
        tabPanel.not(':first').hide();
    }
});

このスクリプトをメソッドにすればいいだけの話なのです。

著者プロフィール

長谷川広武(はせがわひろむ;h2ham)

1984年生まれ。出版会社勤務でWeb製作・運用更新の経験を経て,2009年より株式会社24-7に入社。Webサイトの運用更新業務を中心に制作業務を行う。各種CMSのカスタマイズやjQueryを利用したUI設計などを得意とする。ブログではjQueryや日々の思いなど書いたり,自作のjQueryプラグインなどを公開している。

http://h2ham.seesaa.net/


徳田和規(とくだかずのり;5509;nori)

マインドフリー株式会社,ディレクター。Web製作会社にてHTML/CSSコーディングなどの業務を行いながらAjax/JavaScriptに興味を持ち,ブログで自作のjQueryプラグインなどを公開する。2009年9月からマインドフリー株式会社に参加。

http://moto-mono.net/

コメント

コメントの記入

パスサポ

多数の情報処理技術者試験対策書籍の発行実績を誇る技術評論社がお届けする,資格試験合格サイト「めざせ! 情報処理試験 パスサポ」が開設されました。

ピックアップ

サクセスストーリーに続く,快適サーバー運用管理のヒント!

データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

gihyo.jp インフラエンジニア情報局

ネットワークやITにかかわるあらゆる業種で必要とされるインフラエンジニアに向けた技術情報や心構え,その魅力について多角的に紹介。

テストエンジニア ステーション

いま,ITに関わるあらゆる開発業務で注目されつつあるテスト系エンジニアをターゲットにしたコンテンツサイトを展開します。

一行クイックアンケート

gihyo.jpで取り上げてほしいネタは?

※検索はページ右上の検索ボックスをご利用ください。

その他の連載

読むウェブ ~本とインタラクション

ディスプレイで読む活字とそのインタラクション(interaction:相互作用)について,最新Webを紹介しながら読み解いていく。

いま,見ておきたいウェブサイト

この連載では,国内外の最新のウェブサイトを隔週更新で取り上げ,これら最新サイトの特徴や素晴らしい部分を,さまざまな角度から解説していきます。

Windows phoneアプリケーション開発入門

Windows Marcketplace for Mobileがサービス開始され,作成したアプリケーションを個人でも世界をターゲットに公開できる環境が整ってきました。これを機にWindows phoneアプリケーションの開発をしてみませんか?

ここは知っておくべき!Windows Server 2008技術TIPS

5年ぶりのサーバOSとなったWindows Server 2008が出荷されて早2年。2009年にはR2が出荷され,再び注目を集めています。発売前から実施したトレーニングによって感じた,インフラエンジニアの方々に知っておいていただきたい機能を中心にご紹介します。

キーパーソンが見るWeb業界

本連載はWeb Site Expert/gihyo.jpとの連動企画です。阿部淳也, 長谷川敦士, 森田雄のお三方による,Web業界をテーマにした座談会です。

きたみりゅうじの聞かせて珍プレー

ソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。みなさんからの投稿もお待ちしてます!

ActionScript 3.0で始めるオブジェクト指向スクリプティング

野中文雄氏が,簡単なスクリプトは書いたことがあるという初級者を対象に,ActionScript 3.0の基本からクラス定義までを解説します。

まだ間に合う「ITパスポート」受験対策 原山先生の短期合格塾

この連載では,4月18日のITパスポート試験の受験に向けて,短い期間で効率良く受験対策を行う方法や,確実に得点するための裏ワザなどを伝授していきます。

連載一覧

gihyo.jp

  • DEVELOPER STAGE
  • ADMINISTRATOR STAGE
  • WEB+DESIGN STAGE
  • LIFESTYLE STAGE
  • SCIENCE STAGE
  • NEWS & REPORT

書籍案内

  • 新刊書籍
  • 書籍ジャンル一覧
  • 書籍シリーズ一覧
  • 新刊ピックアップ
  • ロングセラー
  • 電脳会議

定期刊行物一覧

  • Software Design
  • WEB+DB PRESS
  • Web Site Expert
  • 組込みプレス