WEBサイト制作の勉強

WEBサイト制作の勉強の為の解説ブログです。

Traversingメソッドを使ったタブパネル

f:id:yachin29:20161001040013j:plain

Traversingメソッドを利用

Traversingのメリット

トラバースを利用することで、イベントが発生した要素に関連した要素を操作する事ができます。ボタンが複数ある場合などは「this」を使う事になりますが、このトラバースを使えば操作したい要素を「this」から見てどういう関係性にある「要素」、という形で指定する事ができます。jQueryを使う上で非常に大事な考え方なので、しっかりと理解しましょう。


childrenメソッド
jQueryオブジェクトで指定した要素の「子」要素でセレクタにマッチする要素を選択します。子要素とは階層構造(入れ子構造)において直下にある要素のことです。
childrenメソッドを利用すれば「セレクタ:>(子要素)」と同じようなことが可能です。

parentメソッド
指定した要素の「親」要素を選択します。親要素とは階層構造(入れ子構造)において直上にある要素のことです。
名前が似ているparentsメソッドはparentメソッドと異なり「先祖」要素も選択します。

siblingsメソッド
指定した要素の兄弟要素(同じ階層の要素)を選択します。引数を設定しない場合はすべての兄弟要素を選択します。



f:id:yachin29:20170224130454p:plain

www.jquerystudy.info


index.html

<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>タブパネル</title>
<link rel="stylesheet" href="style.css">
<script src="jquery.min.js"></script>
<script>
$(function(){
	 $('#tab a').on('click', function(){ 
	     $(this).parent().addClass('current').siblings('.current').removeClass('current');
 //クリックしたaの親要素(li)にcurrentを付ける。他のli要素にcurrentが付いている場合は削除する

	 var tabTarget = $(this).attr('href'); //クリックしたa hrefの値を変数化する
$( tabTarget ).addClass('current').siblings('.current').removeClass('current'); 
//クリックされたタブの中身の切替
    return false;
	 });
});
</script>
</head>

<body>
<div id="panel">
<h1>世界の街並み</h1>
<ul id="tab">
<li class="current"><a href="#ny">ニューヨーク</a></li>
<li><a href="#kyoto">京都</a></li>
<li><a href="#paris">パリ</a></li>
<li><a href="#gold">ゴールドコースト</a></li>
</ul>
<div class="tabContents current" id="ny">
<p><img src="img/01.png" alt="ニューヨーク・タイムズスクエア"></p>
</div>
<div class="tabContents" id="kyoto">
<p><img src="img/02.png" alt="京都清水寺"></p>
</div>
<div class="tabContents" id="paris">
<p><img src="img/03.png" alt="パリ・凱旋門"></p>
</div>
<div class="tabContents" id="gold">
<p><img src="img/04.png" alt="ゴールドコースト"></p>
</div>
</div>
</body>
</html>

スタイルシート

#panel {
  width:640px;
  background:#666666;
  padding:10px;
  box-sizing:border-box;
  margin: 20px auto 0;
}
h1 {
  color:#FFF;
  font-size:22px;
  font-weight:normal;
  padding:20px;
}
ul#tab {
  width:620px;
  margin: 0 auto;
  overflow:hidden;
}
#tab li {
  width:25%;
  float:left;
  height:50px;
  background:#222;
  border-left:2px solid #666;
  box-sizing:border-box;
}
#tab li:first-child {
  border-left:none;
}
#tab li a {
  display:block;
  width:100%;
  text-align:center;
  line-height:50px;
  color:#fff;
  font-size:14px;
}
.tabContents {
  display:none;
  width:620px;
  padding:10px;
  box-sizing:border-box;
  background:#FFFFFF;
  border-radius: 0 0 8px 8px;/*左上、右上、右下、左下の順*/
}

/*.currentの処理*/
#tab li.current {
  background:#FFF;
}
#tab li.current a {
  color:#222;
}
.tabContents.current {
  display:block;
}