【jQuery入門】Ajaxでページのコンテンツを取得して更新する

 
              jQueryWeb                          
 
jQuery

ソースコード

以下は、タブを切り替えた際にAjaxでページコンテンツを取得して更新するサンプル

<div id="container">
  <ul>
    <li><a href="html.html">HTML</a></li>
    <li><a href="js.txt">JavaScript</a></li>
    <li><a href="css.html">CSS</a></li>
    <li><a href="jquery.html">jQuery</a></li>
    <li><a href="php.php">PHP</a></li>
  </ul>
  <div></div>
</div>
$(function() {
  var tabs = $('#container');
  $('> ul li:first a', tabs).addClass('selected');
  $('> div', tabs).load(
    $('> ul li:first a', tabs).attr('href')); // 初期表示
  $('> ul li a', tabs).click(function(e) {
    if (!$(this).hasClass('selected')) { // 選択中のタブの再クリックは無視する
      $('> ul li a.selected', tabs).removeClass('selected');
      $(this).addClass('selected');
      $('> div', tabs).load($(this).attr('href')); // 選択されたコンテンツを取得して更新
    }
    e.preventDefault();
  });
});
#container {
  width: 690px;
}

#container > ul {
  margin: 0px;
  padding: 0px;
}

#container > ul li {
  list-style-type: none;
  float: left;
  line-height: 160%;
  width: 138px;
  height: 40px;
}

#container > ul li a {
  display: block;
  text-align: center;
  text-decoration: none;
  background-color: #cfc;
  color: #000;
  border: solid 1px Black;
}

#container > ul li a.selected {
  background-color: #000;
  color: #fff;
}

#container > div {
  border: 1px solid #c0c0c0;
  border-top: none;
  padding: 15px;
}

タブパネルの構造

タブパネルの基本

タブをul要素で、タブの内容を表すパネル部分をdiv要素で、タブパネル全体を<div id="container">要素で囲んでいる。

タブリストを横並びにする

cssでタブリストを横並びにする。

タブパネルの内容はa要素で表す

パネルに表示する内容はa要素のhref属性を表す。

これはJavaScriptがオフになっている場合を考慮しての措置で、動作させるだけであればdata-xxx属性で指定すればよい。

通常、選択時のスタイルを定義する

タブに対して、通常時と選択時のスタイルを定義しておき、JavaScriptでクラスを付与して切り替える。

loadメソッドで外部ファイルを読み込む

loadメソッドはjQueryで提供されており、指定されたファイルを読み込み、現在の要素に反映する

タブクリック時にパネルの内容を読み込む

先頭のタブを選択状態にする

ページロード時にタブパネルを初期化する。

タブが選択された時にパネルの内容を書き換える

クリックされたタブパネルにselectedクラスを付与して選択状態にし、パネルの内容を取得して更新する。
また、直前まで選択されていたタブの選択状態を解除する

えず

東京でフリーランスのWebエンジニアやっています。 今はPHPとGoをメインに、プライベートでは広く浅くをモットーにフロント〜インフラまで学習しています。 当面の目標はDevOps寄りのオールラウンダー。

jQueryWeb
スポンサーリンク
えずをフォローする
えずブログ