deeplus+

  • jQuery

  • Tips

jQueryで追加のプラグイン不要のタブ

jQueryで動くタブのサンプルです。もっと効率の良いプラグインはいくらでもあるのですが...データの整理も兼ねて覚え書きです。

jQueryでTab

IE8+ / jQuery 2.2(1.12) 動作確認

jQuery本体のみで動くタブの使い方

いつも通りjQuery本体を読み込みます。

<!--[if lt IE 9]>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<![endif]-->

<!--[if gte IE 9]><!-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
<!--<![endif]-->

タブのjs部分

タブ内容を2行目で指定、タブ切り替えのボタンを3行目で指定。タブのカレント表示用classを4行目で指定。

$(function(){
  var panel = ['#content1','#content2','#content3'];
  var btn =   ['#button1','#button2','#button3'];
  var activeClass = 'success';
  // 一旦すべてのコンテンツを非表示にする
  $('.content').hide();
  // 最初はコンテンツ1を表示する
  var $activePanel =  $(panel[0]).show();
  // 最初はボタン1の色を変える
  var $activeButton = $(btn[0]).addClass(activeClass);

  function tabPanelChange(n){
    // ボタンのイベント処理
    $(btn[n]).on('click',function(){
      // アクティブなボタンを非アクティブ表示にする
      $activeButton.removeClass(activeClass);
      // 現在表示されているコンテンツを非表示にする
      $activePanel.hide();
      // ボタンをアクティブ表示にする
      $(this).addClass(activeClass);
      // コンテンツを表示する
      $(panel[n]).fadeIn("slow");
      $activePanel = $(panel[n]);
      $activeButton = $(this);
      // #対応
      return false;
    });
  }
  // ボタンの数だけ実行
  for(var i = 0 ; i < btn.length ; i++){
    tabPanelChange(i);
  }
});

タブのhtml部分

カレント表示部分のclassはhtml側には記述していません。

<!--ボタン-->
<nav>
  <ul>
    <li><a href="#" id="button1">ボタン1</a></li>
    <li><a href="#" id="button2">ボタン2</a></li>
    <li><a href="#" id="button3">ボタン3</a></li>
  </ul>
</nav>

<!--コンテンツ1-->
<div class="content" id="content1">
  <section>
      〜 内容 〜
  </section>
</div>

<!-- コンテンツ2 -->
<div class="content" id="content2">
  <section>
      〜 内容 〜
  </section>
</div>

<!-- コンテンツ3 -->
<div class="content" id="content3">
  <section>
      〜 内容 〜
  </section>
</div>

タブのCSS部分

カレント表示部分だけ指定してあげれば、とりあえずは動きます。

/* ボタンをアクティブにする */
.success{color: #fff; background-color: #99cc33;}

参照元: